把数组分割为新的数组块。每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个。
可选参数 preserve_key 是一个布尔值,它指定新数组的元素是否有和原数组相同的键(用于关联数组),还是从 0 开始的新数字键(用于索引数组)。默认是分配新的键名。
array_chunk(array,size,preserve_key);
参数 | 描述 |
---|---|
array |
必需。规定要使用的数组。 |
size |
必需。整数值,规定每个新数组包含多少个元素。 |
preserve_key |
可选。可能的值:true - 保留原始数组中的键名。false - 默认。每个结果数组使用从零开始的新数组索引。 |
$array=['a','b','c','d','e5'=>'a',[1,2,3,4]];
$arr=array_chunk($array,4);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)
[1] => Array
(
[0] => a
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
)
)
检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。
array_key_exists(key,array)
参数 | 描述 |
---|---|
key |
必需,规定键名 |
array |
必须,规定数组 |
$array=['a','b','c','d','e5'=>'a',[1,2,3,4]];
var_dump (array_key_exists('e5',$array));
echo '<br>';
var_dump(array_key_exists('2',$array));
-------------------------------
//输出结果
boolean true
boolean true
返回包含数组中所有键名的一个新数组
如果提供了第二个参数,则只返回键值为该值的键名
如果 strict 参数指定为 true,则严格检查键值的据类型(例如: 1与”1”是不同的)
array_keys(array,value,strict)
参数 | 描述 |
---|---|
array |
必须,规定数组 |
value |
可选,可指定键值然后返回键值对应的键名 |
strict |
可选,与value参数一起使用,为true时对类型精选严格比较 |
$array=['a','b','c','d','e5'=>'a',[1,2,3,4]];
$arr=array_keys($array,'a');
printf('<pre>%s</pre><hr>',print_r($arr,true));
$arr=array_keys($array);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => 0
[1] => e5
)
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => e5
[5] => 4
)
返回数组中的一个随机键名,也可以指定数量,返回包含随机建名的数组
array_rand(array,number)
参数 | 描述 |
---|---|
array |
必须,规定数组 |
number |
可选,规定返回多少个随机元素 |
$array=['a','b','c','d','e5'=>'a',[1,2,3,4]];
$arr=array_rand($array);
printf('<pre>%s</pre><hr>',print_r($arr,true));
$arr=array_rand($array,3);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
4
Array
(
[0] => 0
[1] => 2
[2] => 3
)
把一个或多个数组合并为一个数组并返回
索引数组键名相同时不会被合并成数组,而是被排序到数组的尾部
关联数组键名相同时,最后的元素会覆盖其他元素
array_merge(array1,array2,array3...)
参数 | 描述 |
---|---|
array1 |
必需,规定数组 |
array2 |
可选,规定数组 |
array3 |
可选,规定数组 |
$array=['a','b','a'=>[1,2,'z'=>3,4],'y2'=>'c','d','e5'=>'a'];
$array2=['e5'=>'123','s','y2'=>'yy',564,'a'=>[1,2,'z'=>3,'a','b','c']];
$arr=array_merge($array,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => a
[1] => b
[a] => Array
(
[0] => 1
[1] => 2
[z] => 3
[2] => a
[3] => b
[4] => c
)
[y2] => yy
[2] => d
[e5] => 123
[3] => s
[4] => 564
)
把一个或多个数组合并为一个数组并返回
索引数组键名相同时不会被合并成数组,而是被排序到数组的尾部
关联数组键名相同时,会把对应的键值合并成索引数组
该函数与 array_merge() 函数的区别在于处理多维数组会对元素进行覆盖
array_merge_recursive(array1,array2,array3...)
参数 | 描述 |
---|---|
array1 |
必须,规定数组 |
array2 |
可选,规定数组 |
array3... |
可选,规定数组 |
$array=['a','b','a'=>[1,2,'z'=>3,4],'y2'=>'c','d','e5'=>'a'];
$array2=['e5'=>'123','s','y2'=>'yy',564,'a'=>[1,2,'z'=>3,'a','b','c']];
$arr=array_merge_recursive($array,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => a
[1] => b
[a] => Array
(
[0] => 1
[1] => 2
[z] => Array
(
[0] => 3
[1] => 3
)
[2] => 4
[3] => 1
[4] => 2
[5] => a
[6] => b
[7] => c
)
[y2] => Array
(
[0] => c
[1] => yy
)
[2] => d
[e5] => Array
(
[0] => a
[1] => 123
)
[3] => s
[4] => 564
)
使用后面数组的值替换第一个数组的值,返回被替换的数组
如果传递了多个替换数组,它们将被按顺序依次处理,后面数组的值将覆盖之前数组的值
array_replace(array1,array2,array3...)
参数 | 描述 |
---|---|
array1 |
必需,指定一个数组 |
array2 |
可选,指定一个要替换 array1 的值的数组 |
array3,... |
可选,指定多个要替换 array1 和 array2, … 的值的数组,后面数组的值将覆盖之前数组的值 |
$array=['a','b','a'=>[1,2,'a6'=>666,'z'=>9,4],'y2'=>'c','d','e5'=>'a'];
$array2=['e5'=>'123','s','y2'=>'yy',564,'a'=>[1,2,'z'=>3,'a','b','c']];
$arr=array_replace($array,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => s
[1] => 564
[a] => Array
(
[0] => 1
[1] => 2
[z] => 3
[2] => a
[3] => b
[4] => c
)
[y2] => yy
[2] => d
[e5] => 123
)
递归地使用后面数组的值替换第一个数组的值,返回被替换的数组
该函数与array_replace()的区别是
array_replace 不会处理二级,只会把VALUE看成一个整体
array_replace_recursive会对多维数组进行操作
array_replace_recursive(array1,array2,array3...)
参数 | 描述 |
---|---|
array1 |
必需,指定一个数组 |
array2 |
可选,指定一个要替换 array1 的值的数组 |
array3,... |
可选,指定多个要替换 array1 和 array2, … 的值的数组,后面数组的值将覆盖之前数组的值 |
$array=['a','b','a'=>[1,2,'a6'=>666,'z'=>9,4],'y2'=>'c','d','e5'=>'a'];
$array2=['e5'=>'123','s','y2'=>'yy',564,'a'=>[1,2,'z'=>3,'a','b','c']];
$arr=array_replace_recursive($array,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => s
[1] => 564
[a] => Array
(
[0] => 1
[1] => 2
[a6] => 666
[z] => 3
[2] => a
[3] => b
[4] => c
)
[y2] => yy
[2] => d
[e5] => 123
)
使用键名比较计算数组的差集
根据 array1 中的键名和 array2 进行比较,返回不同键名的数组
array_diff_key(array1,array2)
参数 | 描述 |
---|---|
array1 |
必需,指定一个数组 |
array2 |
可选,指定一个要在 array1 内去除的元素的数组 |
$array=['a','b','a'=>[1,2,'a6'=>666,'z'=>9,4],'y2'=>'c','d','e5'=>'a'];
$array2=['e5'=>'123','s','y2'=>'yy',564,'a'=>[1,2,'z'=>3,'a','b','c']];
$arr=array_diff_key($array,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[2] => d
)
带索引检查计算数组的差集
返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值
array_diff_assoc(array1,array2)
参数 | 描述 |
---|---|
array1 |
必需,指定一个数组 |
array2 |
可选,指定一个要在 array1 内去除的元素的数组 |
$array=['a','b','a'=>[1,2,'a6'=>666,'z'=>9,4],'y2'=>'c','d','e5'=>'a'];
$array2=['e5'=>'123','s','y2'=>'c',564,'a'=>[1,2]];
$arr=array_diff_assoc($array,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => a
[1] => b
[2] => d
[e5] => a
)