简介
手册说明
注:数组操作符 +:+ 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
常用函数
1. 可用于队列操作
array_push($arr, $value1, ...)
将一个或多个单元压入数组的末尾(入栈)array_pop($arr);
弹出数组最后一个单元(出栈)array_unshift($arr, $value1, ...);
在数组开头插入一个或多个单元array_shift($arr);
将数组开头的单元移出数组
2. 数组自定义操作
- array_map()
- 语法:
array array_map ( callable $callback , array $array1 [, array $... ] )
- 说明:返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。
- 详细使用
- 例:
输出:<?php function cube($n) { return($n * $n * $n); } $a = array(1, 2, 3, 4, 5); $b = array_map("cube", $a); print_r($b);
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
- 语法:
- array_walk()
- 语法:
bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
- 说明:使用用户自定义函数对数组中的每个元素做回调处理,不会受到 array 内部数组指针的影响。array_walk() 会遍历整个数组而不管指针的位置。
- 具体使用
- 例:
结果:$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); function test_alter(&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; } function test_print($item2, $key) { echo "$key. $item2<br />\n"; } echo "Before ...:\n"; array_walk($fruits, 'test_print'); array_walk($fruits, 'test_alter', 'fruit'); echo "... and after:\n"; array_walk($fruits, 'test_print');
Before ...: d. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple
- 例:
$origin = [ ['status' => 'error', 'num' => 5], ['status' => 'success', 'num' => 3] ]; $statistics = []; array_walk($origin, function ($value) use (&$statistics) { return $statistics[$value['status']] = $value['num']; }); //statistics = [ //'error' => 5, //'success' => 3 //];
- array_reduce()
- 语法:
mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
- 说明:用回调函数迭代地将数组简化为单一的值,
- 具体使用
- 参数:
callback mixed callback ( mixed $carry , mixed $item ) carry 携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial。 item 携带了本次迭代的值。 initial 如果指定了可选参数 initial,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果。
- 例:
<?php function sum($carry, $item) { $carry += $item; return $carry; } function product($carry, $item) { $carry *= $item; return $carry; } $a = array(1, 2, 3, 4, 5); $x = array(); var_dump(array_reduce($a, "sum")); // int(15) var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5 var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
- 语法:
3. 多数组操作
array_merge($array1, $array2, ...)
合并一个或多个数组array_diff($array1, $array2, ...)
计算数组的差集; 对比 array1 和其他一个或者多个数字,返回在 array1 中但是不在其他 array 里的值。array_intersect($array1, $array2, ...)
计算数组的交集;返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
4. 其他
array_keys
返回数组中部分的或所有的键名array_values
返回数组中所有的值array_unique
移除数组中重复的值array_multisort
对多个数组或多维数组进行排序array_reverse
返回单元顺序相反的数组array_slice
从数组中取出一段- 语法:
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
- 语法:
array_search
在数组中搜索给定的值,如果成功则返回首个相应的键名- 语法:
mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
- 语法: