array_slice ( array $array
, int $offset
[, int $length
= NULL
[, bool $preserve_keys
= false ]] ) : array
从数组中取出一段,并返回。
参数4用来控制是否保留键名,需要注意的是如果数组有字符串键,所返回的数组将保留键名。
返回根据 offset 和 length 参数所指定的 array数组中的一段序列,包括offset位置的那个数据,为数组格式。原数组不变
如果 offset 非负,则序列将从 array中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。
如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。
$input = array('aa' =>"a", 'bb'=>"b", 'cc' => "c", 'dd'=>"d", 'ee'=>"e");
$output = array_slice($input, 2);
$output1 = array_slice($input, -2, 1);
/*
Array
(
[cc] => c
[dd] => d
[ee] => e
)
Array
(
[dd] => d
)
*/
情景: 使用array_slice()实现分页
/*
* 数组分页函数 核心函数 array_slice
* 用此函数之前要先将数据库里面的所有数据按一定的顺序查询出来存入数组中
* $count 每页多少条数据
* $page 当前第几页
* $array 查询出来的所有数组
* order 0 - 不变 1- 反序
* */
function page_array($count,$page,$array,$order=0){
global $countpage; #定全局变量
$page=(empty($page))?'1':$page; #判断当前页面是否为空 如果为空就表示为第一页面
$start=($page-1)*$count; #计算每次分页的开始位置,$count设定每页显示几条
if($order==1){
$array=array_reverse($array); #函数返回翻转顺序的数组
}
$totals=count($array);
$countpage=ceil($totals/$count); #计算总页面数
$pagedata=array();
$pagedata=array_slice($array,$start,$count);
return $pagedata; #返回查询数据
}
/**
* 分页及显示函数
* $countpage 全局变量,照写
* $url 当前url
*/
function show_array($countpage,$url){
$page=empty($_GET['page'])?1:$_GET['page'];
if($page > 1){
$uppage=$page-1;
}else{
$uppage=1;
}
if($page < $countpage){
$nextpage=$page+1;
}else{
$nextpage=$countpage;
}
$str='<div style="border:1px; width:300px; height:30px; color:#9999CC">';
$str.="<span>共 {$countpage} 页 / 第 {$page} 页</span>";
$str.="<span><a href='$url?page=1'> 首页 </a></span>";
$str.="<span><a href='$url?page={$uppage}'> 上一页 </a></span>";
$str.="<span><a href='$url?page={$nextpage}'>下一页 </a></span>";
$str.="<span><a href='$url?page={$countpage}'>尾页 </a></span>";
$str.='</div>';
return $str;
}
$arr = [1,2,3,4,5,6,7,8,9,10];
//生成点击链接
$str = show_array(5,"http://127.0.0.1/php/array/array_slice_1.php");
echo $str;
//每页显示2条,当前是第三页
$page = isset($_GET['page'])?$_GET['page']:1;
$pagedata = page_array(2,$page,$arr);
echo '<pre>';
print_r($pagedata);