- 1. array()-创建数组
- 2. array_change_key_case()-将数组的键名称修改为全大写,或者是全小写
- 3. array_chunk()-将一个数组分割成多个,那么最终返回的就至少是二维数组了。
- 4.array_column-数组中指定的一列
- 5. array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
- 6. array_count_values — 统计数组中所有的值出现的次数
- 7. array_diff — 计算数组的差集
- 8. array_fill — 用给定的值填充数组
- 9. array_filter — 用回调函数过滤数组中的单元
- 10. array_flip — 交换数组中的键和值
- 11. array_intersect — 计算数组的交集
- 12. array_keys — 返回数中某个元素的或所有的键名
- 13. array_map — 为数组的每个元素应用回调函数
- 14. array_merge — 合并一个或多个数组
- 15. array_multisort — 对多个数组或多维数组进行排序
- 16. array_pad — 以指定长度将一个值填充进数组
- 17. array_pop — 弹出数组最后一个单元(出栈)
- 18. array_product — 计算数组中所有值的乘积
- 19. array_push — 将一个或多个单元压入数组的末尾(入栈)
- 20. array_replace — 使用传递的数组替换第一个数组的元素
- 21. array_reverse — 返回单元顺序相反的数组
- 22. array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
- 23. array_shift — 将数组开头的单元移出数组
- 24. array_slice — 从数组中取出一段
- 25. array_splice — 去掉数组中的某一部分并用其它值取代
- 26. array_sum — 对数组中所有值求和
- 27. array_unique — 移除数组中重复的值
- 28. array_unshift — 在数组开头插入一个或多个单元
- 29. array_values — 返回数组中所有的值
- 30. 数组指针偏移
1. array()-创建数组
用于创建数组的函数的函数,是一个语言结构,非常规的函数
2. array_change_key_case()-将数组的键名称修改为全大写,或者是全小写
array array_change_key_case ( array
$array[, int$case= CASE_LOWER ] ) CASE_UPPER , CASE_LOWER
3. array_chunk()-将一个数组分割成多个,那么最终返回的就至少是二维数组了。
array array_chunk ( array
$array, int$size[, bool$preserve_keys= false ] ) 第二个参数是:分割后每个数组的单元数目 第三个参数是:是否保留原有的索引,默认是false,按照 0 1 2 排序
<?phpinput_array = array('a', 'b', 'c', 'd', 'e');print_r(array_chunk($input_array, 2));print_r(array_chunk($input_array, 2, true));/*Array([0] => Array([0] => a[1] => b)[1] => Array([0] => c[1] => d)[2] => Array([0] => e))Array([0] => Array([0] => a[1] => b)[1] => Array([2] => c[3] => d)[2] => Array([4] => e))*/
4.array_column-数组中指定的一列
从多维数组中返回单列数组 array array_column ( array
$input, mixed$column_key[, mixed$index_key= null ] ) 第二个参数:需要返回的列,值 第三个参数:作为返回数组的索引/键的列
<?php$records = array(array('id' => 2135,'first_name' => 'John','last_name' => 'Doe',),array('id' => 3245,'first_name' => 'Sally','last_name' => 'Smith',),array('id' => 5342,'first_name' => 'Jane','last_name' => 'Jones',),array('id' => 5623,'first_name' => 'Peter','last_name' => 'Doe',));// [1] 取出所有人的 first_name$first_names = array_column($records, 'first_name');print_r($first_names);/*Array([0] => John[1] => Sally[2] => Jane[3] => Peter)*/// [2] 以id作为索引,last_name作为值$last_names = array_column($records, 'last_name', 'id');print_r($last_names);/*Array([2135] => Doe[3245] => Smith[5342] => Jones[5623] => Doe)*/?>
5. array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array array_combine ( array
$keys, array$values) 第一个参数:一个数组,作为键 第二个参数:一个数组,作为值 返回值:组成的新的数组
<?php$a = array('green', 'red', 'yellow');$b = array('avocado', 'apple', 'banana');$c = array_combine($a, $b);print_r($c);/*Array([green] => avocado[red] => apple[yellow] => banana)*/
6. array_count_values — 统计数组中所有的值出现的次数
array array_count_values ( array
$array)
<?php$array = array(1, "hello", 1, "world", "hello");print_r(array_count_values($array));/*Array([1] => 2[hello] => 2[world] => 1)*/
7. array_diff — 计算数组的差集
array array_diff ( array
$array1, array$array2[, array$...] ) 计算前者对后者的差集 后续参数就是更多相比较的数组
<?php$arr1 = [1, 2, 3, 4];$arr2 = [1, 4, 5, 7];$arr3 = [2, 7];$result = array_diff($arr1, $arr2);print_r($result);/*Array([1] => 2[2] => 3)*/$result2 = array_diff($arr1, $arr2, $arr3);print_r($result2);/*Array([2] => 3)*/
更多相关函数: array_diff_assoc — 带索引检查计算数组的差集,索引也会被列入检查范围 array_diff_key — 使用键名比较计算数组的差集,根据键名来比较
8. array_fill — 用给定的值填充数组
array array_fill ( int
$start_index, int$num, mixed$value) 第一个参数:第一个填充元素的数组下标 第二个参数:填充的数量 第三个参数:填充的值
<?php$a = array_fill(5, 6, 'banana');$b = array_fill(-2, 4, 'pear');print_r($a);print_r($b);/*Array([5] => banana[6] => banana[7] => banana[8] => banana[9] => banana[10] => banana)Array([-2] => pear[0] => pear[1] => pear[2] => pear)*/
相关函数 array_fill_keys — 使用指定的键和值填充数组。 预计用到的也会较多
<?php$keys = array('foo', 5, 10, 'bar');$a = array_fill_keys($keys, 'banana');print_r($a);/*Array([foo] => banana[5] => banana[10] => banana[bar] => banana)*/
9. array_filter — 用回调函数过滤数组中的单元
array array_filter ( array
$array[, callable$callback[, int$flag= 0 ]] )
<?php// 奇数function odd($var){return($var & 1);}// 偶数function even($var){return(!($var & 1));}$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);$array2 = array(6, 7, 8, 9, 10, 11, 12);echo "Odd :\n";print_r(array_filter($array1, "odd"));echo "Even:\n";print_r(array_filter($array2, "even"));
10. array_flip — 交换数组中的键和值
array array_flip ( array
$array)
11. array_intersect — 计算数组的交集
参考 8
12. array_keys — 返回数中某个元素的或所有的键名
这个函数可以从一维数组中获取某个值为xxx的元素的位置,亦可以是获取全部元素的键 可以用于查找某个元素在一维数组中出现的位置,但对于多维数组,不好用。
<?php$array = array(0 => 100, "color" => "red");print_r(array_keys($array));$array = array("blue", "red", "green", "blue", "blue");print_r(array_keys($array, "blue"));$array = array("color" => array("blue", "red", "green"),"size" => array("small", "medium", "large"));print_r(array_keys($array));/*Array([0] => 0[1] => color)Array([0] => 0[1] => 3[2] => 4)Array([0] => color[1] => size)*/
13. array_map — 为数组的每个元素应用回调函数
array array_map ( callable
$callback, array$array1[, array$...] ) callback:回调函数,应用到每个数组里的每个元素。 array1:数组,遍历运行callback函数。 数组列表:每个都遍历运行callback函数。
<?php// [1] 第一种写法,php中貌似所有的回调函数参数都支持我这么写$a = array(1, 2, 3, 4, 5);$b = array_map(function($n) {return ($n * $n * $n);}, $a);print_r($b);/*Array([0] => 1[1] => 8[2] => 27[3] => 64[4] => 125)*/// [2] 第二种function cube($n){return ($n * $n * $n);}$arr1 = [1, 2, 3, 4, 5];$arr2 = array_map('cube', $arr1);print_r($arr2);
14. array_merge — 合并一个或多个数组
array array_merge ( array
$array1[, array$...] ) 返回合并后的数组
<?php// [1] 常规方式$arr1 = [1, 2, 3];$arr2 = [4, 5, 6];$res1 = array_merge($arr1, $arr2);print_r($res1);/*Array([0] => 1[1] => 2[2] => 3[3] => 4[4] => 5[5] => 6)*/
当合并的是关联数组时,前面一个索引的值会被后面的值覆盖
<?php$arr1 = ['a' => 1, 'b' => 2, 'c' => 3];$arr2 = ['a' => 4, 'e' => 5, 'c' => 6];$res1 = array_merge($arr1, $arr2);print_r($res1);/*Array([a] => 4[b] => 2[c] => 6[e] => 5)*/
如果想要完全的保留第一个数组中的元素,附带添加第二个数组中的元素。可是使用 + 后面的元素只要出现有相同的键名称都会被统统忽略。
<?php$arr1 = ['a' => 1, 'b' => 2, 'c' => 3];$arr2 = ['a' => 4, 'e' => 5, 'c' => 6];$res1 = $arr1 + $arr2;print_r($res1);/*Array([a] => 1[b] => 2[c] => 3[e] => 5)*/
对于合成变量和数组 我们可以先将变量强制转换成数组
<?php$name = 'xs';$arr = [1, 2, 3];print_r(array_merge((array) $name, $arr));/*Array([0] => xs[1] => 1[2] => 2[3] => 3)*/
相关函数 array_merge_recursive — 递归地合并一个或多个数组
15. array_multisort — 对多个数组或多维数组进行排序
16. array_pad — 以指定长度将一个值填充进数组
可以参考一下 第8个函数 array_fill,这二者的区别如下所示:
array_fill : 用给定的值填充成数组,是变量值像数组转换
- 第一个参数:开始填充的位置
- 第二个参数:填充的数量
- 第三个参数:填充的值
array_pad:向数组中填充变量值
- 第一个参数:原油的数组
- 第二个参数:新数组的长度
- size > 0 , 右侧填充
- size < 0 , 左侧填充
- 如果 |size| < count(原数组) ,不会发生填充
- 第三个参数:被填充的值
- 返回值:填充后的数组
<?php$input = array(12, 10, 9);$result = array_pad($input, 5, 0);// result is array(12, 10, 9, 0, 0)$result = array_pad($input, -7, -1);// result is array(-1, -1, -1, -1, 12, 10, 9)$result = array_pad($input, 2, "noop");// not padded
17. array_pop — 弹出数组最后一个单元(出栈)
返回数组的最后一个元素,并将数组的长度 -1 。 如果
array是空(如果不是一个数组),将会返回NULL
18. array_product — 计算数组中所有值的乘积
这就要求我们的数组,最好是一个数值组成的数组。
- 如果数组是空数组,返回1,PHP 5.3.6以前返回的是0
- 如果是一个混合的数组呢,返回0
- 如果是多维数组呢,抱歉根本就不好用。
<?php// [1] 混合数组返回了 0$arr = [1, 2, 3, 'a'];print_r(array_product($arr). '<br>') ; // 0// [2] 空数组$arr2 = [];print_r(array_product($arr2). '<br>'); // 1// [3] 正常纯数字数组, 返回正常的值$arr3 = [1, 2, 3];print_r(array_product($arr3). '<br>'); // 6// [4] 多维数组呢?$arr4 = ['first' => [1, 2, 3],'second' => [4, 5, 6],];print_r(array_product($arr4). '<br>'); // 1// [5]$arr4 = [1 => [1, 2, 3],2 => [4, 5, 6],];print_r(array_product($arr4). '<br>'); // 1
19. array_push — 将一个或多个单元压入数组的末尾(入栈)
和array_pop() 相反,但是这个函数不仅可以让单个变量值入栈,也可以让数组入栈。 功能比较强,而且用的地方也比较多 需要注意的是:它的返回值是处理后元素的个数,而不是处理后的数组!!!
<?php// [1] 常规操作$arr1 = [1, 2, 3];$name = 'xs';array_push($arr1, $name);print_r($arr1);// 1, 2, 3,'xs'// [2] 入栈多个值$arr1 = [1, 2, 3];array_push($arr1, 'xs', '19960118', '男');print_r($arr1);/*Array([0] => 1[1] => 2[2] => 3[3] => xs[4] => 19960118[5] => 男)// [3] 入栈一个数组$infoArr = ['name' => '向上', 'sex' => '男',];$other =['salary' => '8000', 'girfirend' => 'lxm'];array_push($infoArr, $other);print_r($infoArr);/*Array([name] => 向上[sex] => 男[0] => Array([salary] => 8000[girfirend] => lxm))*/*/
20. array_replace — 使用传递的数组替换第一个数组的元素
array array_replace ( array
$array1, array$array2[, array$...] )
- 作用除了修改还可以插入
- 参数:
- 第一个参数为原数组
- 后面的参数为替换数组
- 返回值:
- 替换好返回替换后的数组
- 发生错误,返回NULL
<?php$base = array("orange", "banana", "apple", "raspberry");$replacements = array(0 => "pineapple", 4 => "cherry");$basket = array_replace($base, $replacements);print_r($basket);/*Array([0] => pineapple[1] => banana[2] => apple[3] => raspberry[4] => cherry)/*
21. array_reverse — 返回单元顺序相反的数组
array array_reverse ( array
$array[, bool$preserve_keys= false ] )
- 参数:
- 第一个参数原数组
- 第二个参数是一个bool值
- 设置为
TRUE会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。- 返回值:返回反转后的数组。
<?php// [1] 只使用第一个参数,数字索引$arr = [1, 2, 3, 4];print_r(array_reverse($arr));/*Array([0] => 4[1] => 3[2] => 2[3] => 1)*/// [2] 第二个参数设置为 TRUE 会保留数字的键print_r(array_reverse($arr, true));/*Array([3] => 4[2] => 3[1] => 2[0] => 1)*/
22. array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
mixed array_search ( mixed
$needle, array$haystack[, bool$strict= false ] )
- 参数:
- 第一个参数:要找的值
- 第二个参数:原数组
- 第三个参数:,可选参数,布尔值默认 false
- 如果设置为 true ,会严格比较
- 返回值:
- 找到了返回该元素的键,如果出现了不止一次,则返回第一个出现的键。要返回所有匹配值的键,应该用 array_keys() 加上可选参数
search_value来代替。- 没找到返回false
<?php// [1] 简单使用$arr = [1, 2, 3];if (array_search('1', $arr)) {echo 'Found <br>';}else {echo 'Not found! <br>';}// Not found!// [2] 如果设置第二个参数,还必须为同一个对象的实例子$arr = [1, 2, 3];if (array_search(1, $arr, true)) {echo 'Found <br>';} else {echo 'Not found! <br>';}// Not found!
23. array_shift — 将数组开头的单元移出数组
24. array_slice — 从数组中取出一段
array array_slice ( array
$array, int$offset[, int$length=NULL[, bool$preserve_keys= false ]] )
- 参数:
- 1️⃣:原数组
- 2️⃣:截取的偏移量
0 左侧开始
- < 0 右侧开始
- 3️⃣:可选参数 截取的长度
- 4️⃣:可选参数 重置数字索引,默认会重置。默认值是false。
- 返回值:返回其中一段。 如果 offset 参数大于 array 尺寸,就会返回空的 array。
<?php// [1] 简单的用法$input = array("a", "b", "c", "d", "e");print_r(array_slice($input, 2));/*Array([0] => c[1] => d[2] => e)*/// [2] 设置最后一个参数为 true 则保留原数组中的索引$input = array("a", "b", "c", "d", "e");print_r(array_slice($input, 2, 3, true));/*Array([2] => c[3] => d[4] => e)*/
25. array_splice — 去掉数组中的某一部分并用其它值取代
array array_splice ( array
&$input, int$offset[, int$length= count($input) [, mixed$replacement= array() ]] )
- 参数:
- 1️⃣:原数组
- 2️⃣:偏移量
- 3️⃣:可选参数,长度
- 4️⃣:可选参数, 如果给出了
replacement数组,则被移除的单元被此数组中的单元替代。- 返回值:返回一个包含有被移除单元的数组。
<?php// [1] 只保留前两个元素$input = array("red", "green", "blue", "yellow");array_splice($input, 2);// $input is now array("red", "green")... ...
26. array_sum — 对数组中所有值求和
27. array_unique — 移除数组中重复的值
array array_unique ( array
$array[, int$sort_flags= SORT_STRING ] )
- 参数:
- 1️⃣:原数组
- 2️⃣:可选参数,用于排列
SORT_REGULAR- 按照通常方法比较(不修改类型)SORT_NUMERIC- 按照数字形式比较SORT_STRING- 按照字符串形式比较SORT_LOCALE_STRING- 根据当前的本地化设置,按照字符串比较。- 返回值:返回过滤后的数组。
- 注意:array_unique() 不能应用于多维数组。
<?php// [1] 错误的用法$arr = array('name' => 'xs','pad' => 'xs','other' => 'xs','age' => 24,'sex' => '男');array_unique($arr);print_r($arr);/*Array([name] => xs[pad] => xs[other] => xs[age] => 24[sex] => 男)*/// [1] 正确的用法$arr2 = array('name' => 'xs','pad' => 'xs','other' => 'xs','age' => 24,'sex' => '男');print_r(array_unique($arr2));/*Array([name] => xs[age] => 24[sex] => 男)*/
28. array_unshift — 在数组开头插入一个或多个单元
29. array_values — 返回数组中所有的值
30. 数组指针偏移
1. next()
将数组中的内部指针向前移动一位 mixed next ( array
&$array) 返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回FALSE。 next()指针在返回前移动,所以它返回的是下一个元素的值
