PHP常用数组函数
目录
array_column
返回数组中指定的一列
array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
示例:
$arr = [ ['id' => 12, 'name' => 'paul', 'age' => 23], ['id' => 13, 'name' => 'itbsl', 'age' => 25], ['id' => 14, 'name' => 'jack', 'age' => 26] ]; $result = array_column($arr, 'name'); dump($result);
输出:
array(3) { [0] => string(4) "paul" [1] => string(5) "itbsl" [2] => string(4) "jack" }
array_combine
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_combine ( array $keys , array $values ) : array
示例:
$a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); dump($c);
输出:
array(3) { ["green"] => string(7) "avocado" ["red"] => string(5) "apple" ["yellow"] => string(6) "banana" }
array_count_values
统计数组中所有的值在数组中出现的次数
array_count_values ( array $array ) : array
示例:
$arr = [1, "hello", 1, "world", "hello"]; $result = array_count_values($arr); dump($result);
输出:
array(3) { [1] => int(2) ["hello"] => int(2) ["world"] => int(1) }
array_fill_keys
使用指定的键和值填充数组
array_fill_keys ( array $keys , mixed $value ) : array
使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。
示例:
$arr1 = ['id', 'name', 'age']; $value = 25; $result = array_fill_keys($arr1, $value); dump($result);
输出:
array(3) { ["id"] => int(25) ["name"] => int(25) ["age"] => int(25) }
array_flip
交换数组中的键和值
array_flip ( array $array ) : array
array_flip() 返回一个反转后的 array,例如 array 中的键名变成了值,而 array 中的值成了键名。
如果同一个值出现多次,则最后一个键名将作为它的值,其它键会被丢弃。
示例:
$arr = ['id' => 12, 'name' => 'itbsl', 'age' => 12]; $result = array_flip($arr); dump($result);
输出:
array(2) { [12] => string(3) "age" ["itbsl"] => string(4) "name" }
array_intersect
计算数组的交集
array_intersect ( array $array1 , array $array2 [, array $... ] ) : array
示例:
$arr1 = ['green', 'yellow', 'red', 2]; $arr2 = ['blue', 'green', 2, 'red']; $result = array_intersect($arr1, $arr2); dump($result);
输出:
array(3) { [0] => string(5) "green" [2] => string(3) "red" [3] => int(2) }
array_key_exists
检查数组里是否有指定的键名或索引
array_key_exists ( mixed $key , array $array ) : bool
数组里有键 key 时,array_key_exists() 返回 true。 key 可以是任何能作为数组索引的值。
示例:
$search_array = ['first' => 1, 'second' => 2]; if (array_key_exists('first', $search_array)) { echo "the 'first' element is in the array"; } else { echo "the 'first' element is not in the array"; }
输出:
the 'first' element is in the array
array_keys
返回数组中部分的或所有的键名
说明:
array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] ) : array
如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。
参数:$array
一个数组,包含了要返回的键。$search_value
如果指定了这个参数,只有包含这些值的键才会返回。$strict
判断在搜索的时候是否该使用严格的比较(===)。
示例:
$arr1 = [0 => 100, 'color' => 'red']; dump(array_keys($arr1)); $arr2 = ['blue', 'red', 'green', 'blue', 'blue']; dump(array_keys($arr2, 'blue')); $arr3 = [ 'color' => ['blue', 'red', 'green'], 'size' => ['small', 'medium', 'large'] ]; dump(array_keys($arr3));
输出:
array(2) { [0] => int(0) [1] => string(5) "color" } array(3) { [0] => int(0) [1] => int(3) [2] => int(4) } array(2) { [0] => string(5) "color" [1] => string(4) "size" }
array_map
为数组的每个元素应用回调函数
array_map ( callable $callback , array $array1 [, array $... ] ) : array
示例:
$arr = ['green', 'blue', 'red', 'yellow']; $result = array_map('ucfirst', $arr); dump($result);
输出:
array(4) { [0] => string(5) "green" [1] => string(4) "blue" [2] => string(3) "red" [3] => string(6) "yellow" }
array_merge
合并一个或多个数组
array_merge ( array $array1 [, array $... ] ) : array
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
示例:
$arr1 = [1, 2, 'name' => 'itbsl', 'age' => 12]; $arr2 = [3, 4, 'name' => 'jack', 'hobby' => 'fishing', 'age' => 25]; $result = array_merge($arr1, $arr2); dump($result);
输出:
array(7) { [0] => int(1) [1] => int(2) ["name"] => string(4) "jack" ["age"] => int(25) [2] => int(3) [3] => int(4) ["hobby"] => string(7) "fishing" }
array_pop
弹出数组最后一个单元(出栈)
array_pop ( array &$array ) : mixed
示例:
$arr = [1, 2, 3, 4]; array_pop($arr); dump($arr);
输出:
array(3) { [0] => int(1) [1] => int(2) [2] => int(3) }
array_push
将一个或多个单元压入数组的末尾(入栈)
array_push ( array &$array , mixed $value1 [, mixed $... ] ) : int
示例:
$arr = [1, 2, 3]; array_push($arr, 4, 5); dump($arr);
输出:
array(5) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(4) [4] => int(5) }
array_rand
从数组中随机取出一个或多个单元
array_rand ( array $array [, int $num = 1 ] ) : mixed
从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。 它使用了伪随机数产生算法,所以不适合密码学场景
示例:
$arr = ['green', 'blue', 'yellow', 'red', 'black']; dump(array_rand($arr)); dump(array_rand($arr, 2));
输出:
int(4) array(2) { [0] => int(3) [1] => int(4) }
array_reverse
返回单元顺序相反的数组
array_reverse ( array $array [, bool $preserve_keys = false ] ) : array
参数:$array
输入的数组。
$preserve_keys
如果设置为 true 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。
示例:
$arr = ['green', 'blue', 'yellow', 2]; $result = array_reverse($arr); dump($result);
array_search
在数组中搜索给定的值,如果成功则返回首个相应的键名
array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) : mixed
大海捞针,在大海(haystack)中搜索针( needle 参数)。
示例:
$arr = ['id' => 12, 'name' => 'kevin', 'age' => 25]; $result = array_search('kevin', $arr); dump($result);
输出:
string(4) "name"
array_shift
将数组开头的单元移出数组
array_shift ( array &$array ) : mixed
array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。
示例:
$arr = [1, 2, 3, 4, 5]; array_shift($arr); dump($arr);
输出:
array(4) { [0] => int(2) [1] => int(3) [2] => int(4) [3] => int(5) }
array_slice
从数组中取出一段
array_slice ( array $array , int $offset [, int $length = null [, bool $preserve_keys = false ]] ) : array
array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
示例:
$arr = ['green', 'blue', 'yellow', 'red', 'black', 'pink']; $result = array_slice($arr, 1, 2); dump($result);
输出:
array(2) { [0] => string(4) "blue" [1] => string(6) "yellow" }
array_sum
对数组中所有值求和
array_sum ( array $array ) : number
array_sum() 将数组中的所有值相加,并返回结果。
示例:
$arr1 = [10, 20, 30]; $arr2 = ['a' => 10, 'b' => 20, 'c', 'd' => 40]; dump(array_sum($arr1)); dump(array_sum($arr2));
输出:
int(60) int(70)
array_unique
移除数组中重复的值
array_unique ( array $array [, int $sort_flags = sort_string ] ) : array
参数:$array
输入的数组。
$sort_flags
排序类型标记:
- sort_regular - 按照通常方法比较(不修改类型)
- sort_numeric - 按照数字形式比较
- sort_string - 按照字符串形式比较
- sort_locale_string - 根据当前的本地化设置,按照字符串比较。
示例:
$arr1 = [10, 20, 10, 30]; dump(array_unique($arr1));
输出:
array(3) { [0] => int(10) [1] => int(20) [3] => int(30) }
array_unshift
在数组开头插入一个或多个单元
array_unshift ( array &$array [, mixed $... ] ) : int
array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
示例:
$arr = ['orange', 'banana']; array_unshift($arr, 'apple', 'strawberry'); dump($arr);
输出:
array(4) { [0] => string(5) "apple" [1] => string(10) "strawberry" [2] => string(6) "orange" [3] => string(6) "banana" }
array_values
返回数组中所有的值
array_values ( array $array ) : array
示例:
$arr = ['size' => 'xxl', 'color' => 'green']; dump(array_values($arr));
输出:
array(2) { [0] => string(3) "xxl" [1] => string(5) "green" }
arsort
对数组进行逆向排序并保持索引关系
arsort ( array &$array [, int $sort_flags = sort_regular ] ) : bool
本函数对数组进行排序,数组的索引保持和单元的关联。
主要用于对那些单元顺序很重要的结合数组进行排序。
示例:
$fruits = ['d' => 'lemon', 'a' => 'orange', 'b' => 'banana', 'c' => 'apple']; arsort($fruits); dump($fruits); $nums = [4, 2, 1, 9, 10, 7]; arsort($nums); dump($nums);
输出:
array(4) { ["a"] => string(6) "orange" ["d"] => string(5) "lemon" ["b"] => string(6) "banana" ["c"] => string(5) "apple" } array(6) { [4] => int(10) [3] => int(9) [5] => int(7) [0] => int(4) [1] => int(2) [2] => int(1) }
asort
对数组进行排序并保持索引关系
asort ( array &$array [, int $sort_flags = sort_regular ] ) : bool
本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
示例:
$fruits = ['d' => 'lemon', 'a' => 'orange', 'b' => 'banana', 'c' => 'apple']; asort($fruits); dump($fruits); $nums = [4, 2, 1, 9, 10, 7]; asort($nums); dump($nums);
输出:
array(4) { ["c"] => string(5) "apple" ["b"] => string(6) "banana" ["d"] => string(5) "lemon" ["a"] => string(6) "orange" } array(6) { [2] => int(1) [1] => int(2) [0] => int(4) [5] => int(7) [3] => int(9) [4] => int(10) }
count
计算数组中的单元数目,或对象中的属性个数
count ( mixed $array_or_countable [, int $mode = count_normal ] ) : int
统计出数组里的所有元素的数量,或者对象里的东西。
示例:
$arr = [1, 2, 3, 4, 5]; dump(count($arr));
输出:
int(5)
in_array
检查数组中是否存在某个值
in_array ( mixed $needle , array $haystack [, bool $strict = false ] ) : bool
示例:
$arr = [1, 2, 3, 4, 5]; dump(in_array(1, $arr)); dump(in_array(10, $arr));
输出:
bool(true) bool(false)
key_exists
array_key_exists()的别名
krsort
对数组按照键名逆向排序
krsort ( array &$array [, int $sort_flags = sort_regular ] ) : bool
对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。
示例:
$arr = ['a' => 'apple', 'o' => 'orange', 's' => 'strawberry', 'b' => 'banana']; krsort($arr); dump($arr);
输出:
array(4) { ["s"] => string(10) "strawberry" ["o"] => string(6) "orange" ["b"] => string(6) "banana" ["a"] => string(5) "apple" }
ksort
对数组按照键名排序
ksort ( array &$array [, int $sort_flags = sort_regular ] ) : bool
示例:
$arr = ['a' => 'apple', 'o' => 'orange', 's' => 'strawberry', 'b' => 'banana']; ksort($arr); dump($arr);
输出:
array(4) { ["a"] => string(5) "apple" ["b"] => string(6) "banana" ["o"] => string(6) "orange" ["s"] => string(10) "strawberry" }
list
把数组中的值赋给一组变量
list ( mixed $var1 [, mixed $... ] ) : array
像 array() 一样,这不是真正的函数,而是语言结构。 list() 可以在单次操作内就为一组变量赋值。
示例:
$arr = ['coffee', 'brown', 'caffeine']; //列出所有变量 list($drink, $color, $power) = $arr; echo "$drink is $color and $power makes it special.<br>"; //列出他们其中的一个 list(, , $power) = $arr; echo "i need $power.";
输出:
coffee is brown and caffeine makes it special. i need caffeine.
rsort
对数组逆向排序
rsort ( array &$array [, int $sort_flags = sort_regular ] ) : bool
本函数对数组进行逆向排序(最高到最低)。
示例:
$arr = [1, 3, 2, 5, 10]; rsort($arr); dump($arr);
输出:
array(5) { [0] => int(10) [1] => int(5) [2] => int(3) [3] => int(2) [4] => int(1) }
sort
对数组排序
sort ( array &$array [, int $sort_flags = sort_regular ] ) : bool
本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
示例:
$arr = [1, 3, 2, 5, 10]; sort($arr); dump($arr);
输出:
array(5) { [0] => int(1) [1] => int(2) [2] => int(3) [3] => int(5) [4] => int(10) }
shuffle
打乱数组
shuffle ( array &$array ) : bool
本函数打乱(随机排列单元的顺序)一个数组。 它使用的是伪随机数产生器,并不适合密码学的场合。
示例:
$arr = [ ['id' => 1, 'name' => 'paul', 'age' => 12], ['id' => 2, 'name' => 'jack', 'age' => 23], ['id' => 3, 'name' => 'jane', 'age' => 34], ['id' => 4, 'name' => 'lion', 'age' => 14], ]; shuffle($arr); dump($arr);
输出:
array(4) { [0] => array(3) { ["id"] => int(2) ["name"] => string(4) "jack" ["age"] => int(23) } [1] => array(3) { ["id"] => int(1) ["name"] => string(4) "paul" ["age"] => int(12) } [2] => array(3) { ["id"] => int(4) ["name"] => string(4) "lion" ["age"] => int(14) } [3] => array(3) { ["id"] => int(3) ["name"] => string(4) "jane" ["age"] => int(34) } }
usort
使用用户自定义的比较函数对数组中的值进行排序
usort ( array &$array , callable $value_compare_func ) : bool
本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
示例:
$arr = [ ['id' => 1, 'name' => 'paul', 'age' => 12], ['id' => 2, 'name' => 'jack', 'age' => 23], ['id' => 3, 'name' => 'jane', 'age' => 34], ['id' => 4, 'name' => 'lion', 'age' => 14], ]; //按照年龄从大到小排序 function mysort($stu1, $stu2) { return $stu1['age'] < $stu2['age']; } usort($arr, 'mysort'); dump($arr);
输出:
array(4) { [0] => array(3) { ["id"] => int(3) ["name"] => string(4) "jane" ["age"] => int(34) } [1] => array(3) { ["id"] => int(2) ["name"] => string(4) "jack" ["age"] => int(23) } [2] => array(3) { ["id"] => int(4) ["name"] => string(4) "lion" ["age"] => int(14) } [3] => array(3) { ["id"] => int(1) ["name"] => string(4) "paul" ["age"] => int(12) } }