php数组处理案例(即Array函数)

更多参考(约80个函数):

https://www.runoob.com/php/php-ref-array.html

1、arsort/asort/ksort/krsort

arsort(array,sortingtype)键值进行降序排序。
asort键值进行升序排序。
ksort() 键名进行升序排序。
krsort() 键名进行降序排序。

  1. $arr = ["zhang"=>26,"li"=>30,"wang"=>5];
  2. arsort($arr);
  3. print_r($arr);
  4. //输出 Array ( [li] => 30 [zhang] => 26 [wang] => 5 )

2、key(array)

从当前内部指针位置返回元素键名。

  1. current(array)返回数组中的当前元素的值。
  2. $arr2 = [“26","30","5"];
  3. $arr3 = [“zhang","li","wang"];
  4. $arr1 = [“zhang"=>26,"li"=>30,"wang"=>5];
  5. echo key($arr2);
  6. echo key($arr3);
  7. echo key($arr1);
  8. echo “<br>";
  9. echo current($arr2);
  10. echo current($arr3);
  11. echo current($arr1);
  12. //输出
  13. 00zhang
  14. 26zhang26

3、compact(var1,var2…)

创建一个包含变量名和它们的值的数组。

  1. $zhang = ‘26’;
  2. $li = ‘30’;
  3. print_r(compact(“zhang","li"));
  4. //输出 Array ( [zhang] => 26 [li] => 30 )

4、array_count_values(array)

统计数组中所有值出现的次数。

  1. $arr4 = [“A","Cat","Dog","A","Dog"];
  2. print_r(array_count_values($arr4));
  3. //输出 Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )

5、array_combine(keys,values)

合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值。

  1. $arr2 = [“26","30","5"];
  2. $arr3 = [“zhang","li","wang"];
  3. print_r(array_combine($arr3,$arr2));
  4. //输出 Array ( [zhang] => 26 [li] => 30 [wang] => 5 )

6、array_chunk(array,size,preserve_keys)

把一个数组分割为新的数组块。

  1. $arr3 = [“zhang","li","wang"];
  2. var_dump(array_chunk($arr3,2));
  3. //输出
  4. [
  5. [
  6. 0=>’zhang’,
  7. 1=>’li’,
  8. ],
  9. [
  10. 0=>’wang’
  11. ]
  12. ]

7、array_flip(array)

反转/交换数组中的键名和对应关联的键值。

  1. $arr1 = [“zhang"=>26,"li"=>30,"wang"=>5];
  2. print_r(array_flip($arr1));
  3. //输出 Array ( [26] => zhang [30] => li [5] => wang )

8、array_unshift/array_shift/array_push/array_pop

  1. $arr1 = [“zhang"=>26,"li"=>30,"wang"=>5];
  2. array_unshift($arr1,’liu’);//在数组开头插入一个或多个元素。
  3. array_shift($arr1);//删除数组中的第一个元素,并返回被删除的元素。
  4. array_push($arr1,’qin’);//向数组尾部插入一个或多个元素。
  5. array_pop($arr1);//删除数组中的最后一个元素。
  6. print_r($arr1);
  7. //输出
  8. // Array ( [0] => liu [zhang] => 26 [li] => 30 [wang] => 5 )
  9. // Array ( [li] => 30 [wang] => 5 )
  10. // Array ( [zhang] => 26 [li] => 30 [wang] => 5 [0] => qin )
  11. // Array ( [zhang] => 26 [li] => 30 )

9、array_column

返回输入数组中某个单一列的值。

  1. $a = array(
  2. array(
  3. ‘id’ => 5698,
  4. ‘first_name’ => ‘Peter’,
  5. ‘last_name’ => ‘Griffin’,
  6. ),
  7. array(
  8. ‘id’ => 4767,
  9. ‘first_name’ => ‘Ben’,
  10. ‘last_name’ => ‘Smith’,
  11. ),
  12. array(
  13. ‘id’ => 3809,
  14. ‘first_name’ => ‘Joe’,
  15. ‘last_name’ => ‘Doe’,
  16. )
  17. );
  18. $last_names = array_column($a, ‘last_name’);
  19. 输出:
  20. Array
  21. (
  22. [0] => Griffin
  23. [1] => Smith
  24. [2] => Doe
  25. )

10、array_values

返回数组中所有的值(不保留键名)

  1. $a=array(“Name"=>"Peter","Age"=>"41","Country"=>"USA");
  2. print_r(array_values($a));
  3. Array ( [0] => Peter [1] => 41 [2] => USA )

11、in_array()

  1. in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

12、array_push

  1. 函数向数组尾部插入一个或多个元素
  2. array_push(array,value1,value2…)

13、array_map()

函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。

  1. function myfunction($num)
  2. {
  3. return($num*$num);
  4. }
  5. $a=array(1,2,3,4,5);
  6. print_r(array_map(“myfunction",$a));
  7. Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
  8. 或者:
  9. // 使用array_map将二维数组转换为一维数组,以便可以使用array_unique
  10. $uniqueArray = array_map(“serialize", array_unique(array_map(“serialize", $array)));
  11. // 将序列化后的字符串数组转回原来的数组格式
  12. $uniqueArray = array_map(“unserialize", $uniqueArray);
  13. // 达到去重复的目的
  14. print_r($uniqueArray);

14、array_filter

用回调函数过滤数组中的元素:

  1. function test_odd($var)
  2. {
  3. return($var & 1);
  4. }
  5. $a1=array("a","b",2,3,4);
  6. print_r(array_filter($a1,"test_odd"));
  7. Array ( [3] => 3 )

15、array_diff

计算数组的差集:

  1. $array1 = array("a" => "green", "red", "blue", "red");
  2. $array2 = array("b" => "green", "yellow", "red");
  3. $result = array_diff($array1, $array2);
  4. print_r($result);
  5. # 返回一个数组,该数组包括了所有在 array 中但是不在任何其它参数数组中的值。注意键名保留不变。
  6. Array
  7. (
  8. [1] => blue
  9. )

16、filter_var(variable, filter, options)

通过指定的过滤器过滤一个变量。 如果成功,则返回被过滤的数据。如果失败,则返回 FALSE。 过虑值(FILTER_VALIDATE_EMAIL)可能有:https://www.runoob.com/php/php-ref-filter.html

  1. if(!filter_var("someone@example....com", FILTER_VALIDATE_EMAIL))
  2. {
  3. echo("E-mail is not valid");
  4. }
  5. else
  6. {
  7. echo("E-mail is valid");
  8. }
  9. 结果 :E-mail is not valid
  10. 另外还有:filter_var_array()

17、array_unique()

函数用于移除数组中重复的值。如果两个或更多个数组值相同,只保留第一个值,其他的值被移除。

  1. $a=array(“a"=>"red","b"=>"green","c"=>"red");
  2. print_r(array_unique($a));
  3. Array ( [a] => red [b] => green )

18、array_values/array_key_exists

二维数组以name的去重

  1. // 初始化一个关联数组来存储唯一名称的供应商
  2. $uniqueSuppliers = [];
  3. // 遍历原始数组
  4. foreach ($supplier_arr as $item) {
  5. // 使用name作为键,如果键不存在则添加到结果数组
  6. if (!array_key_exists($item['name'], $uniqueSuppliers)) {
  7. $uniqueSuppliers[$item['name']] = $item;
  8. }
  9. }
  10. // 将关联数组转换为索引数组(可选)
  11. $supplier_arr_unique = array_values($uniqueSuppliers);

19、array_column/array_multisort

二维数据排序

  1. $temp= array_column($stock_details,'qty');
  2. array_multisort($temp, SORT_ASC, $stock_details);