批改状态:合格
老师批语:对于每一个函数, 每一个参数都要理解, 特别是常用的
把数组分割为新的数组块。每个数组的单元数目由 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 trueboolean 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));-------------------------------//输出结果4Array([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)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号