首頁  >  文章  >  後端開發  >  php傳回數組中的選定部分的函數array_slice()

php傳回數組中的選定部分的函數array_slice()

黄舟
黄舟原創
2017-11-08 14:18:512840瀏覽

實例

從數組的第二個元素開始取出,並返回直到數組末端的所有元素:

<?php
$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,2));
?>

定義和用法

array_slice() 函數傳回數組中的選定部分。

註解:如果陣列有字串鍵名,所傳回的陣列將保留鍵名(請參閱實例 4)。

語法

array_slice(array,start,length,preserve)
參數 描述
array 必需。規定數組。
start 必需。數值。規定取出元素的開始位置。 0 = 第一個元素。 如果該值設為正數,則從前往後開始取。如果該值設定為負數,則從後向前取 start 絕對值。 -2 意指從陣列的倒數第二個元素開始。
length 可選。數值。規定被傳回數組的長度。 如果該值設定為整數,則傳回該數量的元素。如果該值設為負數,則函數將在舉例數組末端這麼遠的地方終止取出。如果該值未設置,則傳回從 start 參數設定的位置開始直到陣列末端的所有元素。 
preserve 可選。規定函數是保留鍵名還是重置鍵名。可能的值:
  • tru​​e - 保留鍵名

  • false - 預設。重設鍵名

技術細節

回傳值: 傳回陣列中的選取部分。
PHP 版本: 4+
更新日誌 preserve 參數是在 PHP 5.0.2 中新增的。

更多实例

实例 1

从数组的第一个元素开始取出,并返回两个元素:

<?php
$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2));
?>

实例 2

使用负的 start 参数:

<?php
$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,-2,1));
?>

实例 3

带有设置为 true 的 preserve 参数:

<?php
$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2,true));
?>

实例 4

带有字符串和整数键名:

<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow","e"=>"brown");
print_r(array_slice($a,1,2));

$a=array("0"=>"red","1"=>"green","2"=>"blue","3"=>"yellow","4"=>"brown");
print_r(array_slice($a,1,2));
?>

array_slice函数实现的分页方法非常好用,分享如下:

<?php 
//假定一个结果集二维数组: 
   $arr = array(array(&#39;name&#39;=> &#39;name1&#39;,&#39;sex&#39; => &#39;sex1&#39;,&#39;job&#39; => &#39;job1&#39;), 
              array(&#39;name&#39;=> &#39;name2&#39;,&#39;sex&#39; => &#39;sex2&#39;,&#39;job&#39; => &#39;job2&#39;), 
              array(&#39;name&#39;=> &#39;name3&#39;,&#39;sex&#39; => &#39;sex3&#39;,&#39;job&#39; => &#39;job3&#39;), 
              array(&#39;name&#39;=> &#39;name4&#39;,&#39;sex&#39; => &#39;sex4&#39;,&#39;job&#39; => &#39;job4&#39;), 
              array(&#39;name&#39;=> &#39;name5&#39;,&#39;sex&#39; => &#39;sex5&#39;,&#39;job&#39; => &#39;job5&#39;), 
              array(&#39;name&#39;=> &#39;name6&#39;,&#39;sex&#39; => &#39;sex6&#39;,&#39;job&#39; => &#39;job6&#39;), 
              array(&#39;name&#39;=> &#39;name7&#39;,&#39;sex&#39; => &#39;sex7&#39;,&#39;job&#39; => &#39;job7&#39;), 
              array(&#39;name&#39;=> &#39;name8&#39;,&#39;sex&#39; => &#39;sex8&#39;,&#39;job&#39; => &#39;job8&#39;), 
              array(&#39;name&#39;=> &#39;name9&#39;,&#39;sex&#39; => &#39;sex9&#39;,&#39;job&#39; => &#39;job9&#39;), 
              array(&#39;name&#39;=> &#39;name10&#39;,&#39;sex&#39; => &#39;sex10&#39;,&#39;job&#39; => &#39;job10&#39;), 
              array(&#39;name&#39;=> &#39;name11&#39;,&#39;sex&#39; => &#39;sex11&#39;,&#39;job&#39; => &#39;job11&#39;), 
              array(&#39;name&#39;=> &#39;name12&#39;,&#39;sex&#39; => &#39;sex12&#39;,&#39;job&#39; => &#39;job12&#39;), 
     ); 
 
 //计算总记录条数 
 $num = count($arr); 
 //规定每页显示的条数 
 $perpage = 3; 
 //计算页数 
 $pages = ceil($num/$perpage); 
 //echo $num,$perpage,$pagecount;exit; 
 if(is_numeric($_REQUEST[&#39;page&#39;])) 
 { 
  if($_REQUEST[&#39;page&#39;]<1){ 
   $page = 1; 
  }elseif($_REQUEST[&#39;page&#39;]>$pages) 
  { 
   $page = $pages; 
  }else{ 
  $page = $_REQUEST[&#39;page&#39;]; 
   } 
 }else{ 
  $page = 1; 
 } 
 $start = ($page-1)*$perpage; 
 $newpage = array_slice($arr,$start,$perpage,true); 
 //print_r($newpage);exit; 
?> 
<table cellpadding="0" cellspacing="0" border="1"> 
 <tr> 
  <td>name</td> 
  <td>sex</td> 
  <td>job</td> 
 </tr> 
<?php 
 foreach($newpage as $k => $v) 
{ 
?> 
 <tr> 
  <td><?php echo  $v[&#39;name&#39;]; ?></td> 
  <td><?php echo  $v[&#39;sex&#39;]; ?></td> 
  <td><?php echo  $v[&#39;job&#39;]; ?></td> 
 </tr> 
<?php 
} 
?> 
</table> 
<?php 
if($page>1){ 
 echo "<a href=&#39;?page=1&#39;>首页</a>"; 
 echo "<a href=&#39;?page=".($page-1)."&#39;>上一页</a>"; 
}
if($page<$pages) 
{ 
 echo "<a href=&#39;?page=".($page+1)."&#39;>下一页</a>"; 
 echo "<a href=&#39;?page=".$pages."&#39;>末页</a>"; 
} 
?>


以上是php傳回數組中的選定部分的函數array_slice()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn