文章目录
-
-
-
array_change_key_case
-
array_chunk
-
array_column
-
array_combine
-
array_count_values
-
array_diff
-
array_diff_key
-
array_diff_assoc
-
array_fill
-
array_fill_keys
-
array_filter
-
array_flip
-
array_intersect
-
array_keys
-
array_key_exists
-
array_map
-
array_merge
-
array_merge_recursive
-
array_push
-
array_pop
-
array_shift
-
array_unshift
-
array_rand
-
array_reduce
-
array_replace
-
array_reverse
-
array_search
-
array_slice
-
array_splice
-
array_sum
-
array_unique
-
array_values
-
array_walk
-
array_walk_recursive
-
sort
-
asort
-
rsort
-
arsort
-
ksort
-
krsort
-
natsort
-
natcasesort
-
usort
-
uasort
-
uksort
-
compact
-
count
-
current
-
key
-
prev
-
next
-
reset
-
extract
-
implode
-
list
-
in_array
-
range
-
shuffle
-
each
-
array_multisort
-
-
array_change_key_case
array_change_key_case(array $array, int $case = CASE_LOWER): array
功能描述:
返回键名全是小写或者大写的数组。
默认为小写,第二个参数有两个可选的常量:CASE_UPPER 和 CASE_LOWER。
array_chunk
array_chunk(array $array, int $length, bool $preserve_keys = false): array
功能描述:
将数组按照固定的大小分割成多个子数组。子数组的元素个数由 $length 决定。最后一个子数组的元素个数可能会小于 $length。
$arr= ['a', 'b', 'c', 'd', 'e'];
$newArr = array_chunk($arr, 2);
var_export($newArr);
输出结果:
array (
0 =>
array (
0 => 'a',
1 => 'b',
),
1 =>
array (
0 => 'c',
1 => 'd',
),
2 =>
array (
0 => 'e',
),
)
array_column
array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array
功能描述:
可用来返回二维数组中指定的某一列或所有列。(返回所有列时,第二个参数为 null,配合第三个参数来重新设置数组的键,非常管用)。
<?php
$records = array(
array('id' => 2135, 'name' => 'John'),
array('id' => 3245, 'name' => 'Smith'),
array('id' => 5342, 'name' => 'Peter')
);
// 从结果集中取出 name 列
$names = array_column($records, 'name');
print_r($names);
// 从结果集中取出 name 列,并用相应的 id 作为键
$names = array_column($records, 'name', 'id');
print_r($names);
// 从结果集中取出所有列,并用相应的 id 作为键
$names = array_column($records, null, 'id');
print_r($names);
array_combine
array_combine(array $keys, array $values): array
功能描述:
用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值,返回数组。
如果两个数组的单元数不同或者数组为空时返回 false。
$arr = array_combine(array('id', 'name'), array('1', 'jack'));
var_dump($arr);
array_count_values
array_count_values(array $array): array
功能描述:
统计数组中每个 value 值出现的次数,返回这个统计结果。
array_diff
array_diff(array $array, array ...$arrays): array
功能描述:
按照 value 值比较计算多个数组的差集,返回差集数组。
该数组包含了
所有在第一个数组中但不在其它数组中的值
。键名保持不变。
array_diff_key
array_diff_key(array $array, array ...$arrays): array
功能描述:
按照 key 键比较计算多个数组的差集,返回差集数组。
除了比较是根据键名而不是值来进行的之外,本函数和 array_diff() 相同。
array_diff_assoc
array_diff_assoc(array $array, array ...$arrays): array
功能描述:
按照 value 值和 key 键比较计算多个数组的差集,返回差集数组。value 值和 key 只要有一个不同,就是差集。
array_fill
array_fill(int $start_index, int $count, mixed $value): array
功能描述:
用 value 参数的值填充 count 个元素到数组,开始键名由 start_index 参数指定。返回填充后的数组。
$dp = array_fill(0, 2, array_fill(0, 3, 0));
print_r($dp);
array_fill_keys
array_fill_keys(array $keys, mixed $value): array
功能描述:
使用指定的键和值填充数组。返回填充后的数组。
array_fill_keys(range(0, 2), 0);
array_filter
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
功能描述:
依次将数组中的每个值传递到 callback 回调函数。如果 callback 函数返回 true,就把数组的当前元素包含在返回的结果数组中;否则,过滤掉当前元素。数组的键名保留不变。返回处理后的新数组。
如果没有提供 callback 函数,就过滤掉数组中所有值为 false 的元素。
可使用 array_values() 对数组重新索引。
array_flip
array_flip(array $array): array
功能描述:
交换数组中的键和值,返回交换后的数组。
array_intersect
array_intersect(array $array, array ...$arrays): array
功能描述:
按照 value 值比较计算多个数组的交集,返回交集数组。
该数组包含了所有在第一个数组中同时也在其它数组中的值。键名保持不变。
array_keys
array_keys(array $array[, mixed $filter_value, bool $strict = false]): array
功能描述:
将数组中的所有键名以数组的形式返回。
如果指定了可选参数 $filter_value,则只返回匹配该值的键名。
array_key_exists
array_key_exists(string|int $key, array $array): bool
功能描述:
判断给定的键名是否存在于数组的 keys 中,返回布尔值。
key_exists() 是 array_key_exists() 的别名。
array_map
array_map(?callable $callback, array $array, array ...$arrays): array
功能描述:
用回调函数映射处理数组中的每一个元素 value,返回处理后的新数组。
$a = [1, 2, 3];
$b = array_map(function ($v) {
return $v ? $v * $v : 0;
}, $a);
print_r($b);
array_merge
array_merge(array ...$arrays): array
功能描述:
合并一个或多个数组,后一个数组中的值附加在前一个数组的后面,返回合并后的数组。
如果数组中有相同的字符串键名,后面的值将覆盖前面的值。
$arr = array_merge( array('a', 'b') , array('b', 'c'));
var_dump($arr);
array_merge_recursive
array_merge_recursive(array ...$arrays): array
功能描述:
递归合并一个或多个数组,后一个数组中的值附加在前一个数组的后面,返回合并后的数组。
如果数组的 value 值本身是一个数组,value 数组中若有相同的字符串键名,会按照对应的字符串条目合并为子数组;如有相同的数值键名,会附加到后面。
array_push
array_push(array &$array, mixed $value1, mixed $... = ?): int
功能描述:
将一个或多个元素压入数组的尾部(入栈),返回新数组的长度。
如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = $var ,因为这样没有调用函数的额外负担。
array_pop
array_pop(array &$array): mixed
功能描述:
将数组的最后一个元素弹出并作为结果返回。数组长度减一。
注意:它会重置(reset)数组指针。
配合 array_push() 可模拟栈的后进先出特性。
array_shift
array_shift(array &$array): mixed
功能描述:
将数组的第一个元素移出并作为结果返回。数组长度减一并将所有其它单元向前移动一位。所有的数值键名改为从零开始计数,字符串键名不变。
注意:它会重置(reset)数组指针。
配合 array_push() 可模拟队列的先进先出特性。
array_unshift
array_unshift(array &$array, mixed ...$values): int
功能描述:
将一个或多个元素插入数组的开头,返回新数组的长度。
单元是作为整体被插入的,因此单元将保持同样的顺序。所有的数值键名改为从零开始计数,字符串键名不变。
注意:它会重置(reset)数组指针。
array_rand
array_rand(array $array, int $num = 1): int|string|array
功能描述:
随机从数组中取出一个或多个元素的键名返回。
$num 如果大于 1,则返回包含多个键名的数组,默认值为 1。
array_reduce
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
功能描述:
用回调函数将数组迭代处理为单一的值,当数组的所有 value 值都被迭代处理完之后,返回迭代的结果。
array_replace
array_replace(array $array, array ...$replacements): array
功能描述:
使用传递的数组按照 key 键替换第一个数组中的元素。返回替换后的新数组。
如果后面的数组 $replacements 的键名和第一个数组 $array 的键名相同,就进行替换;如果 $replacements 的键名,不存在于第一个数组 $array 中,就在 $array 中附加这个元素;如果键名仅存在于第一个数组 $array 中,就保留不变。
array_reverse
array_reverse(array $array, bool $preserve_keys = false): array
功能描述:
返回元素顺序相反的数组。
array_search
array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false
功能描述:
在数组中搜索指定的 value 值,成功则返回相应的键名(返回第一次匹配的键),失败返回 false。
如果 $needle 是字符串,会区分大小写。
array_slice
array_slice(
array $array,
int $offset,
?int $length = null,
bool $preserve_keys = false
): array
功能描述:
从数组中截取一部分元素作为新的数组返回。
$offset 表示起始位置(包括该位置的元素)。
$length 为正时,表示截取的长度;
为负时,表示结束位置,但不包括结束位置的元素
。
array_splice
array_splice(
array &$array,
int $offset,
?int $length = null,
mixed $replacement = []
): array
功能描述:
从数组中去掉一部分元素,返回被移除的数组单元。
如果给了第四个参数,就将 $replacement 从 $offset 位置处插入到 $array 中。
array_sum
array_sum(array $array): int|float
功能描述:
计算数组中所有值的和,并将其以整数或浮点数的形式返回。
array_unique
array_unique(array $array, int $flags = SORT_STRING): array
功能描述:
返回没有重复值的新数组。键名不变。
array_values
array_values(array $array): array
功能描述:
返回数组中所有的值,并给其
重新建立数字索引
。
array_walk
array_walk(array|object &$array, callable $callback, mixed $arg = null): bool
功能描述:
使用用户自定义函数对数组中的每个元素做回调处理。返回布尔值。
array_walk() 不会受数组内部指针的影响,它会遍历整个数组而不管指针的位置。
参数说明:
- 第一个参数 $array :表示输入的数组。
- 第二个参数 $callback :是一个回调函数,它接受两个参数(最多三个)。数组元素的 value 值作为第一个,key 键作为第二个。如果回调函数需要直接作用于数组中的值,则将回调函数的第一个参数指定为引用。这样任何对数组元素 value 值的改变也将改变原始数组本身(原始数组的键名 key 不会被改变)。
- 第三个参数:如果提供了可选参数 $arg,将被作为第三个参数传递给 callback 回调函数。
注意:只有数组的 value 值才可以被改变,不应在回调函数中改变该数组本身的结构(如新增、删除元素等)。
$a = [4, 5];
$arg = 10;
$b = [];
array_walk($a, function (&$v, $k, $third) use (&$b) {
$v = $v * $third;
$k = $k + $third;
$b[$k] = $v;
}, $arg);
print_r($a);
print_r($b);
输出结果:
Array
(
[0] => 40
[1] => 50
)
Array
(
[10] => 40
[11] => 50
)
array_walk_recursive
array_walk_recursive(array|object &$array, callable $callback, mixed $arg = null): bool
功能描述:
使用用户自定义函数对数组中的每个元素递归做回调处理。返回布尔值。
参数说明同 array_walk。
注意:如果数组中某个元素的值也是一个数组,该元素本身不会被回调函数处理,而是递归到它的内部进行处理。
sort
sort(array &$array, int $flags = SORT_REGULAR): bool
功能描述:
将数组中的元素
按照值
升序排序,同时删除原有的键名,并启用数字索引。返回布尔值。
asort
asort(array &$array, int $flags = SORT_REGULAR): bool
功能描述:
将数组中的元素
按照值
升序排序,同时保留键名。返回布尔值。
rsort
rsort(array &$array, int $flags = SORT_REGULAR): bool
功能描述:
将数组中的元素
按照值
降序排序,同时删除原有的键名,并启用数字索引。返回布尔值。
arsort
arsort(array &$array, int $flags = SORT_REGULAR): bool
功能描述:
将数组中的元素
按照值
降序排序,同时保留键名。返回布尔值。
ksort
ksort(array &$array, int $flags = SORT_REGULAR): bool
功能描述:
将数组
按照键名 key
升序排序,同时保留键名。返回布尔值。
krsort
krsort(array &$array, int $flags = SORT_REGULAR): bool
功能描述:
将数组
按照键名 key
降序排序,同时保留键名。返回布尔值。
natsort
natsort(array &$array): bool
功能描述:
将数组
按照值
采用自然排序升序排序,同时保留键名,返回布尔值。
自然排序是指和人们通常对字母数字字符串进行排序的方法一样的排序算法。它和 sort() 采用的计算机排序算法有些区别。
$array1 = $array2 = ['img10.png', 'img1.png', 'img2.png'];
sort($array1);
print_r($array1);
natsort($array2);
print_r($array2);
输出结果:
Array
(
[0] => img1.png
[1] => img10.png
[2] => img2.png
)
Array
(
[1] => img1.png
[2] => img2.png
[0] => img10.png
)
natcasesort
natcasesort(array &$array): bool
功能描述:
将数组
按照值
采用不区分大小写的自然排序升序排序,同时保留键名,返回布尔值。
usort
usort(array &$array, callable $callback): bool
功能描述:
使用用户自定义的比较函数对数组中的元素
按照值
进行排序(会自动删除原来的键名)。
如果数组需要用一种不寻常的标准进行排序,就使用此函数。
回调函数在第一个参数小于,等于或大于第二个参数时,需相应地返回小于,等于或大于 0 的整数。
$arr = ['a1' => 10, 'a2' => 5, 'a3' => 100];
usort($arr, function ($a, $b) {
if ($a == $b) {
return 0;
}
return $a > $b ? 1 : -1;
});
print_r($arr);
输出结果:
Array
(
[0] => 5
[1] => 10
[2] => 100
)
上述写法是按照值升序排序,如果把 1 和 -1 的位置调换,就是降序排序。
uasort
uasort(array &$array, callable $callback): bool
功能描述:
使用用户自定义的比较函数对数组中的元素
按照值
进行排序,保留键名。
uksort
uksort(array &$array, callable $callback): bool
功能描述:
使用用户自定义的比较函数对数组中的元素
按照键名
进行排序。(键名保持不变)
compact
compact(array|string $var_name, array|string ...$var_names): array
功能描述:
变量名成为键名,变量的值成为该键对应的值,返回将所有变量添加进去后的数组。
和 extract()的作用正好相反。
$id = 1;
$name = 'jack';
$arr = compact ( 'id', 'name');
var_dump($arr);
count
count(Countable|array $value, int $mode = COUNT_NORMAL): int
功能描述:
统计数组中元素的数量(数组的长度),返回该数量。
如果是多维数组,可以指定第二个参数为 COUNT_RECURSIVE 或 1,则会对多维数组进行递归计算。
sizeof() 是 count() 函数的别名。
current
current(array|object $array): mixed
功能描述:
返回数组的内部指针当前指向的元素的值。
pos() 是 current() 函数的别名。
key
key(array|object $array): int|string|null
功能描述:
返回数组的内部指针当前指向的元素的键名。
prev
prev(array|object &$array): mixed
功能描述:
将数组的内部指针,向前移动一位,返回移动后指针指向的元素的值。
next
next(array|object &$array): mixed
功能描述:
将数组的内部指针,向后移动一位,返回移动后指针指向的元素的值。
reset
reset(array|object &$array): mixed
功能描述:
将数组的内部指针重置(即回到初始位置,指向第一个元素),并返回第一个元素的值。
extract
extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int
功能描述:
从数组中将变量导入到当前的符号表,键名当作变量名,值作为变量的值。
每个键值对都会在当前的符号表中建立变量,受extract_type和prefix参数的影响。
警告:
不要对不可信的数据使用 extract(),比如用户输入(
G
E
T
、
_GET、
G
ET
、
_FILES)。
implode
implode(string $separator, array $array): string
功能描述:
用指定的分隔符连接数组中的元素,并返回该字符串。
implode() 函数的别名为 join() 函数。
list
list(mixed $var, mixed ...$vars = ?): array
功能描述:
用数组中的值给一组变量赋值。和 array() 一样,它不是真正的函数,而是语言结构。
注意:在 PHP 7.1.0 之前的版本,list() 仅能用于数字索引的数组,并假定数字索引从 0 开始。
list($a, $b) = ['100', '200'];
echo $a.'-'.$b; // 100-200
in_array
in_array(mixed $needle, array $haystack, bool $strict = false): bool
功能描述:
判断给定的值是否存在于数组中,返回布尔值。
range
range(string|int|float $start, string|int|float $end, int|float $step = 1): array
功能描述:
返回包含指定范围内的元素的数组。
s
t
a
r
t
表示第一个元素,
start 表示第一个元素,
s
t
a
r
t
表示第一个元素,
end 表示最后一个元素,可选参数 $step 表示步长,默认为 1。如果 $end 大于 $start,返回的是降序数组。
$arr = range ( 'a' , 'f' );
shuffle
shuffle(array &$array)
功能描述:
将数组中元素的顺序打乱,同时会删除原有的键名,并启用数字索引。返回布尔值。
each
each(array|object &$array): array
功能描述:
将数组中当前指针指向的的键值对形成一个包含四个元素的新数组,返回该新数组,并将指针向后移动一位。
键值对被返回为包含四个单元的新数组,新数组的键名为 0,1,key 和 value。
0 和 key 对应的值为键值对的键,1 和 value 对应键值对的值。
注意:该函数
已自 PHP 7.2.0 起被废弃
,并自 PHP 8.0.0 起被移除。
强烈建议不要依赖该函数
。
array_multisort
功能描述:
常用于二维数组的排序。
$data = [
['sku_id' => 1001, 'price' => 5.0, 'stock_num' => 200],
['sku_id' => 1002, 'price' => 7.0, 'stock_num' => 100],
['sku_id' => 1003, 'price' => 3.0, 'stock_num' => 100],
];
// 将二维数组 $data 按照 stock_num 升序、price 升序排列
array_multisort(
array_column($data, 'stock_num'),
SORT_ASC,
array_column($data, 'price'),
SORT_ASC,
$data
);
var_dump($data);