PHP数组 第2章 数组的系统函数 PHP数组 第2章 数组的系统函数

2023-07-28

1、array_slice 和 array_splice

①、array_slice

array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

返回数组中指定下标offset和长度length的子数组切片。

——参数说明:设数组的长度为num_in。

  • offset

如果offset是正数且小于length,则返回数组会从offset开始;如果offset大于length,则不操作,直接返回。如果offset是负数,则offset = num_in+offset,如果num_in+offset == 0,则将offset设为0。

  • length

如果length小于0,那么会将length转为num_in - offset + length;否则,如果offset+length > array_count,则length = num_in - offset。如果处理后length还是小于0,则直接返回。

  • preserve_keys

默认是false,默认不保留数字键值原顺序,设为true的话会保留数组原来的数字键值顺序。

——使用实例

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"
print_r(array_slice($input, 2, -1)); // array(0 => 'c', 1 => 'd');
print_r(array_slice($input, 2, -1, true)); // array(2 => 'c', 3 => 'd');

②、array_splice

array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement = array() ]] )

删除input中从offset开始length个元素,如果有replacement参数的话用replacement数组替换删除掉的元素。

——参数说明

  • array_splice函数中的offset和length参数跟array_slice函数中的用法一样。

  • replacement

如果这个参数设置了,那么函数将使用replacement数组来替换。如果offset和length指定了没有任何元素需要移除,那么replacement会被插入到offset的位置。如果replacement只有一个元素,可以不用array()去包着它。

——使用示例

$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input变为 array("red", "green")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input变为 array("red", "yellow")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input变为 array("red", "orange")
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input为 array("red", "green","blue", "black", "maroon")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input为 array("red", "green","blue", "purple", "yellow");

2、reset、end、prev、current、next

reset() 将数组的内部指针倒回到第一个单元并返回第一个数组单元的值,如果数组为空则返回 FALSE
end() 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)。
prev()返回数组内部指针指向的前一个单元的值,或当没有更多单元时返回FALSE。
current ( array &array ) current() 函数返回当前被内部指针指向的数组单元的值,并不移动指针。如果内部指针指向超出了单元列表的末端,current()返回 FALSE。
next ( array &array ) 返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回 FALSE。

3、sort、rsort、asort、arsort、ksort、krsort

sort() 函数用于对数组单元从低到高进行排序。
rsort() 函数用于对数组单元从高到低进行排序。 
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。 
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。 
ksort() 函数用于对数组单元按照键名从低到高进行排序。 
krsort() 函数用于对数组单元按照键名从高到低进行排序。
  • bool sort( array &array [, int sort_flags] ) 可选参数 sort_flags 用于改变排序的行为:

sort_flags 取值 说明

SORT_REGULAR 正常比较单元 
SORT_NUMERIC 单元被作为数字来比较 
SORT_STRING 单元被作为字符串来比较 
SORT_LOCALE_STRING 根据当前的区域(locale)设置来把单元当作字符串比较

4、explode、implode

explode() 函数把字符串打散为数组
implode() 函数返回由数组元素组合成的字符串

5、array_chunk

array_chunk(array,size,preserve_key); 把数组分割为新的数组块
其中每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个
可选参数 preserve_key 是一个布尔值,它指定新数组的元素是否有和原数组相同的键(用于关联数组),还是从 0 开始的新数字键(用于索引数组)。默认是分配新的键。

6、数组涉及到的常用函数

array -- 声明一个数组 
count -- 计算数组中的单元数目或对象中的属性个数 
foreach -- 遍历数组 
list -- 遍历数组 
explode -- 将字符串转成数组 
implode -- 将数组转成一个新字符串 
array_merge -- 合并一个或多个数组 
is_array -- 检查是否是数组 
print_r -- 输出数组 
sort -- 数组排序 
array_keys -- 返回数组中所有的键名 
array_values -- 返回数组中所有的值 
key -- 从关联数组中取得键名
阅读 448