PHP常用的数组函数
-
is_array(mixed $var):bool
, 检测变量是否为数组, 返回Ture/False。<?php $num = 1; $nums = ['1', '2']; var_dump(is_array($num)); var_dump(is_array($nums));
-
explode(string $delimiter, string $string [, int $limit]): array
使用分隔符$delimiter
分隔字符串$string
。- 如果设置了
limit
参数并且是正数,则返回的数组包含最多limit
个元素,而最后那个元素将包含string
的剩余部分。 - 如果
limit
参数是负数,则返回除了最后的 -limit
个元素外的所有元素。 - 如果
limit
是 0,则会被当做 1。
<?php $ids = '1,2,3,4,5,6'; $arr1 = explode(',', $ids); $arr2 = explode(',', $ids, 3); print_r($arr1); print_r($arr2);
- 如果设置了
-
implode(string $glue, array $pieces):string
, 指定分隔符$glue
将数组$pieces
中的值拼接起来,返回一个字符串。<?php $arr = [1, 2, 3, 4, 5]; $s1 = implode('', $arr); $s2 = implode(',', $arr); echo $s1 . PHP_EOL . $s2 . PHP_EOL;
-
array_change_key_case(array $array [int $case=CASE_LOWER]):array
: 将数组中的所有键名修改为全大写或全小写, 默认转为小写,返回一个新数组。<?php $arr = [ 'name' => 'zhangsang', 'Age' => 10, ]; $arr = array_change_key_case($arr, CASE_LOWER); // 改为小写 print_r($arr); $arr = array_change_key_case($arr, CASE_UPPER); // 改为大写 print_r($arr);
-
array_chunk(array $array, int $size [, bool $preserve_keys = false]):array
:将一个数组分割成多个数组,其中每个数组的单元数目由size
决定。最后一个数组的单元数目可能会少于size
个。<?php $array = [1, 2, 3, 4, 5 ,6 ,7]; $result = array_chunk($array, 3); print_r($result); $result = array_chunk($array, 2, true); print_r($result);
-
array_column(array $input, mixed $column_key [, mixed $index_key=null]):array
返回input
数组中键值为column_key
的列, 如果指定了可选参数index_key
,那么input
数组中的这一列的值将作为返回数组中对应值的键。<?php $stu = [ [ 'id' => 1, 'name' => '衣服' ], [ 'id' => 2, 'name' => '鞋子' ] ]; $id_list = array_column($stu, 'id'); print_r($id_list);
-
array_combine(array $keys, array $vals): array
:用来自keys
数组的值作为键名,来自values
数组的值作为相应的值, 返回一个新数组。<?php $keys = ['name', 'age']; $vals = ['张三', 10]; $user = array_combine($keys, $vals); print_r($user);
-
array_count_values(array $array): array
: 返回一个关联数组,用array
数组中的值作为键名,该值在数组中出现的次数作为值。<?php $array = ['1', '2', '1', '2', '3']; print_r(array_count_values($array));
-
array_fill_keys(array $keys, mixed $value): array
: 使用value
参数的值作为值,使用keys
数组的值作为键来填充一个数组。<?php $arr = ['1', '3', '5', '7']; print_r(array_fill_keys($arr, '0'));
-
array_filter(array $array [, callable $callback[, int $flag=0]]):array
:依次将array
数组中的每个值传递到callback
函数。如果callback
函数返回 true,则array
数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8]; $callback = function ($val) { // 保留单数数字 return $val % 2 == 0 ? false : true; }; $res = array_filter($arr, $callback); print_r($res);
-
array_flip(array $array):array
: 反转数组中的键和值。<?php $arr = [ 'name' => 'classmate', 'age' => 10 ]; print_r(array_flip($arr));
-
array_key_exists(mixed $key, array $array): bool
:数组里有键key
时,array_key_exists() 返回TRUE
。key
可以是任何能作为数组索引的值。<?php $stu = [ 'name' => 'classmate', 'age' => 20 ]; var_dump(array_key_exists('name', $stu)); var_dump(array_key_exists('val', $stu));
-
array_keys(array $array [,mixed $search_value=null, [bool $strict=false]]): array
:返回数组中的键名,$search_value
表示只有包含了该值的键才会返回,$strict
表示严格模式,只有值类型和值相同才返回。<?php $stu = [ 'a1' => 20, 'a2' => 30, 'a3' => 20, 'a4' => '20' ]; var_dump(array_keys($stu)); var_dump(array_keys($stu, 20)); var_dump(array_keys($stu, 20, true));
-
array_map(callabe $callback, array $array1[, array $...]):array
: 为数组中的每个元素调用一次callback
函数,callback
函数形参的数量和传给 array_map() 数组数量,两者必须一样。<?php $arr = [1, 2, 3, 4, 5]; $arr2 = [6, 7, 8, 9, 10]; // 单个数组 $func1 = function ($val){ return $val * $val; }; print_r(array_map($func1, $arr)); // 多个数组 $func2 = function ($n, $m){ return $n * $m; }; print_r(array_map($func2, $arr, $arr2));
-
array_merge_recursive(array $array1[, array $...]):array
递归的合并一个或多个数组,一个数组中的值附加在前一个数组的后面,返回作为结果的数组<?php $arr = [1, 2, 3, 4, 5]; $arr2 = [6, 7, 8, 9, 10]; print_r(array_merge_recursive($arr)); print_r(array_merge_recursive($arr, $arr2));
-
array_merge(array $array[, array $...]):array
:递归的合并一个数组中的值附加在前一个数组的后面,返回作为结果的数组。<?php $arr = [1, 2, 3, 4, 5]; $arr2 = [6, 7, 8, 9, 10]; print_r(array_merge($arr)); print_r(array_merge($arr, $arr2));
-
array_multisort
: 对多个数组或者多维数组进行排序。<?php // 多个数组升序排序 $arr1 = [2,3,4,1]; $arr2 = [5, 8, 7, 6]; array_multisort($arr1, $arr2); print_r($arr1); print_r($arr2); // 多维数组降序排序 $data = [ [ 'id' => 2, 'name' => '张三' ], [ 'id' => 1, 'name' => '李四' ], [ 'id' => 3, 'name' => '王五' ] ]; array_multisort(array_column($data, 'id'), SORT_DESC, array_column($data, 'name'), $data); print_r($data);
-
array_pop(array &$array):mixed
: 弹出并返回数组的最后一个元素(出栈)。<?php $arr = [1, 2, 3, 4, 5, 6]; $val = array_pop($arr); echo $val.PHP_EOL; print_r($arr);
-
array_push(array &$array, mixed $value1 [, mixed $... ] ):int
:array_push() 将array
当成一个栈,并将传入的变量压入array
的末尾。array
的长度将根据入栈变量的数目增加。<?php $arr = [1, 2, 3, 4, 5, 6]; print_r($arr); array_push($arr, 7, 8, 9); print_r($arr);
-
array_rand(array $array(, in $num=1)):mixed
: 从数组中随机取一个或者多个单元。<?php $arr = [1, 2, 3, 4, 5, 6]; print_r(array_rand($arr, 1)); echo PHP_EOL; print_r(array_rand($arr, 2));
-
array_reduce(array $array, callable $callback [, mixed $initial]):mixed
:用回调函数迭代地将数组简化为单一的值。<?php $arr = [1, 2, 3, 4, 5]; // 求和 $sum = function ($carry, $item){ // $carry为上次迭代后的结构,如果本次迭代是第一次,那么这个值是 initial。 return $carry + $item; }; var_dump(array_reduce($arr, $sum)); var_dump(array_reduce($arr, $sum, 10)); // 10为指定第一迭代的initial值.
-
array_reverse ( array $array, [bool $preserve_keys=false])
:接受数组array 作为输入并返回一个单元为相反顺序的新数组。preserve_keys如果设置为TRUE
会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。<?php $arr = [1, 2, 3, 4, 5]; print_r(array_reverse($arr));
-
array_search
:在数组中搜索给定的值,搜索成功返回首个相应的健名。<?php $arr = [1, 2, 3, 4, 5]; print_r(array_search(4, $arr)); print_r(array_search(6, $arr));
-
array_shift(array $array):mixed
:将数组的第一元素移除,并将其作为结果返回。<?php $arr = [1, 2, 3, 4]; print_r(array_shift($arr)); print_r($arr);
-
array_sum(array $array):number
: 对数组中所有值进行求和。<?php $arr = [1, 2, 3, 4]; print_r(array_sum($arr));
-
array_unique(array $array [, int $sort_flags = SORT_STRING])
:移除数组中的重复元素:<?php $arr = [1, 2, 2,2,2,3]; print_r(array_unique($arr));
-
array_unshift(array &$array [, mixed $...]):int
:在数组开头插入一个或多个元素。<?php $arr = [4]; array_unshift($arr, 1, 2, 3); print_r($arr);
-
array_values(array $array): array
:返回数组中所有的值。<?php $arr = [ 'name' => '张三', 'age' => 20 ]; print_r(array_values($arr));
-
array_walk(array &$array, callable $callback[, mixed $userdata])
:将用户子自定义函数作用于数组中的每个元素。<?php $arr = [ [ 'id' => 1, 'status'=>1, ], [ 'id' => 2, 'status' => 1, ] ]; // 将status改为0 array_walk($arr, function (&$val){ $val['status'] = 0; }); print_r($arr);
-
asort
丶arsort
分别对数组进行升序丶降序排序。<?php $arr = [5, 4, 6, 2, 1]; asort($arr); // 升序排序 print_r($arr); arsort($arr); print_r($arr);
-
compact(mixed $varname1 [, mixed $...]):array
:创建一个包含变量与其值的数组。对每个参数,compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值, 在 PHP 7.3 之前版本,未设置的字符串会被静默忽略, 否则抛异常。
<?php $name = '张三'; $age = 40; $result = compact('name', 'age', 'card'); print_r($result);
-
shuffle(array &$array): bool
:打乱数组。<?php $arr = [1, 2, 3, 4, 5]; shuffle($arr); print_r($arr);
参考PHP官方文档。
来源:CSDN
作者:ClassmateLin
链接:https://blog.csdn.net/ClassmateLin/article/details/104636120