1 数组函数
1.1 创建数组
1.1.1 array_combine()
array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值。
语法:array_combine(keys,values)
参数:
keys:必需,规定数组的键名;
values:必需,规定数组的键值;
返回值:返回合并后的数组。如果两个数组的元素个数不相同,则返回 FALSE。
<?php $keys = ['张三', '李四', '王五']; $values = [34, 25, 44]; $arr = array_combine($keys, $values); var_dump($arr); // array(3) { ["张三"]=> int(34) ["李四"]=> int(25) ["王五"]=> int(44) }
1.1.2 range()
range() 函数创建一个包含指定范围的元素的数组。
语法:range(low,high,step)
参数:
low:必需。规定数组元素的最小值。
high:必需。规定数组元素的最大值。
step:可选。规定元素之间的步进制。默认是 1。
返回值:返回一个包含从 low 到 high 的元素的数组。
注释:如果 low 参数大于 high 参数,则创建的数组将是从 high 到 low。
<?php $arr1 = range(0, 9); // 创建一个0-9之间的数组; $arr2 = range(a, z); // 创建一个a-z之间的数组; $arr3 = range(a, z, 10); // 创建一个步长为10的a-z之间的数组;
1.1.3 compact()
compact() 函数创建一个包含变量名和它们的值的数组。
语法:compact(var1,var2...)
参数:
var1:必需。可以是带有变量名的字符串,或者是一个变量数组。
var2:可选。可以是带有变量名的字符串,或者是一个变量数组。允许多个参数。
返回值:返回带有所有变量名和它们的值的数组。
注释:任何没有变量名与之对应的字符串都被略过。
<?php $firstname = 'zhangsan'; $lastname = 'lisi'; $age = '42'; $result = compact('firstname', 'lastname', 'age'); // 参数为变量字符串 var_dump($result); // array(3) { ["firstname"]=> string(8) "zhangsan" ["lastname"]=> string(4) "lisi" ["age"]=> string(2) "42" } $name = array('firstname', 'lastname'); $result = compact($name, 'location', 'age'); // $name为变量数组。location没有对应的值 var_dump($result); // array(3) { ["firstname"]=> string(8) "zhangsan" ["lastname"]=> string(4) "lisi" ["age"]=> string(2) "42" }
1.1.4 array_fill()
array_fill() 函数用给定的键值填充数组。
语法:array_fill(index,number,value);
参数:
index:必需。规定返回数组的起始索引。
number:必需。规定填充的元素的数量,其值必须大于 0。
value:必需。规定用于填充数组的键值。
返回值:返回填充的数组。
<?php $arr = array_fill(3, 4, 'blue'); // 从索引3开始,填充4位,都填充blue var_dump($arr);
1.2 数组合并与拆分
1.2.1 array_chunk()
array_chunk() 函数把一个数组分割为新的数组块.
语法:array_chunk(array,size,preserve_keys);
参数:
array:必需。规定要使用的数组。
size:必需。一个整数,规定每个新的数组块包含多少元素。
preserve_key:可选。可能的值为:true - 保留原始数组中的键名。false - 默认。每个新数组块使用从零开始的索引。
返回值:返回一个多维的数值数组,从 0 开始,每个维度都包含 size 元素。
<?php $age_arr = array('zhangsan' => 20, 'lisi' => 30, 'wangwu' => 40); $new_arr = array_chunk($age_arr, 2, true); // 拆分为多维数组,并保留原始数组中的键名 var_dump($new_arr); //array(2) { [0]=> array(2) { ["zhangsan"]=> int(20) ["lisi"]=> int(30) } [1]=> array(1) { ["wangwu"]=> int(40) } }
1.2.2 array_merge()
array_merge() 函数用于把一个或多个数组合并为一个数组。
语法:array_merge(array1,array2,array3...)
参数:
array1:必需。规定数组。
array2:可选。规定数组。
返回值:返回合并的数组。
<?php $arr1 = array('zhangsan', 'lisi'); $arr2 = array('wangwu', 'zhaoliu'); $new_arr = array_merge($arr1, $arr2); var_dump($new_arr); // array(4) { [0]=> string(8) "zhangsan" [1]=> string(4) "lisi" [2]=> string(6) "wangwu" [3]=> string(7) "zhaoliu" }
1.2.3 array_slice()
array_slice() 函数返回数组中的选定部分。
语法:array_slice(array,start,length,preserve)
参数:
array:必需。规定数组。
start:必需。数值。规定取出元素的开始位置
length:可选。数值。规定被返回的数组的长度。
preserve:可选。true,保留键名。false,默认,重置键名。
返回值:返回数组中选定的部分。
<?php $arr = array("red","green","blue","yellow","brown"); $new_arr = array_slice($arr, 2, 2, true); var_dump($new_arr); // array(2) { [2]=> string(4) "blue" [3]=> string(6) "yellow" }
1.3 数组比较
1.3.1 array_diff()
array_diff() 函数用于比较两个(或更多个)数组的键值,并返回差集。
语法:array_diff(array1,array2,array3...);
参数:
array1:必需。与其他数组进行比较的第一个数组。
array2:必需。与第一个数组进行比较的数组。
array3:可选,与第一个数组进行比较的其他数组。
返回值:返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2或 array3 等等)中的键值。
<?php $arr1 = array('a' => 'red', 'b' => 'green', 'c' => 'blue', 'd' => 'yellow'); $arr2 = array('e' => 'red', 'f' => 'green', 'g' => 'blue'); $arr3 = array('a' => 'red', 'b' => 'black', 'h' => 'green'); $result = array_diff($arr1, $arr2, $arr3); var_dump($result); // array(1) { ["d"]=> string(6) "yellow" }
1.3.2 array_intersect()
array_intersect() 函数用于比较两个(或更多个)数组的键值,并返回交集。
语法:array_intersect(array1,array2,array3...);
参数:
array1:必需。与其他数组进行比较的第一个数组。
array2:必需。与第一个数组进行比较的数组。
array3:可选。与第一个数组进行比较的其他数组。
返回值:返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2或 array3 等等)中的键值。
<?php $arr1 = array('a' => 'red', 'b' => 'green', 'c' => 'blue', 'd' => 'yellow'); $arr2 = array('e' => 'red', 'f' => 'green', 'g' => 'blue'); $arr3 = array('a' => 'red', 'b' => 'black', 'h' => 'green'); $result = array_intersect($arr1, $arr2, $arr3); var_dump($result); // array(2) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" }
1.4 数组查找替换
1.4.1 array_search()
array_search() 函数在数组中搜索某个键值,并返回对应的键名。
语法:array_search(value,array,strict)
参数:
value:必需。规定在数组中搜索的键值。
array:必需。规定被搜索的数组。
strict:可选。如果为true,则函数在数组中搜索数据类型和值都一致的元素。默认为false。
返回值:如果在数组中找到指定的键值,则返回对应的键名,否则返回 FALSE。如果在数组中找到键值超过一次,则返回第一次找到的键值所匹配的键名。
<?php $arr = array('a' => '5', 'b' => 5, 'c' => '5'); $value = array_search(5, $arr, true); // 返回键值数据类型和值都一致的键名。 var_dump($value); // string(1) "b"
1.4.2 array_splice()
array_splice() 函数从数组中移除选定的元素,并用新元素取代它。函数也将返回被移除元素的数组。
语法:array_splice(array,start,length,array)
参数:
array:必需,规定数组。
start:必需,数值。规定删除元素的开始位置。
length:可选。数值。规定被移除的元素个数。
array:可选。规定带有要插入原始数组中元素的数组。如果只有一个元素,则可以设置为字符串,不需要设置为数组。
返回值:返回包含被提取元素的数组。
<?php $arr1 = array('a' => 'red', 'b' => 'green', 'c' => 'blue', 'd' => 'yellow'); $arr2 = array('a' => 'purple', 'b' => 'orange'); array_splice($arr1, 0, 2, $arr2); // 把数组中的指定元素去掉并用其它值取代。 var_dump($arr1); //array(4) { [0]=> string(6) "purple" [1]=> string(6) "orange" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" }