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