Blogger Information
Blog 26
fans 0
comment 0
visits 18365
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
常用数组函数
雪~人胖胖
Original
703 people have browsed it

1.常用数组函数

  1. <?php
  2. //array_key返回键名 第二个参数返回指定参数的键名
  3. $array = array("blue", "red", "green", "blue", "red");
  4. print_r(array_keys($array, "blue"));
  5. //array_key_exists 返回bool值
  6. $search_array = array('first' => 1, 'second' => 4);
  7. echo array_key_exists('first', $search_array);//1
  8. //array_key_last 获取最后一个键名
  9. echo array_key_last($array);//4
  10. //array_values 返回数组中所有值组成的数组 返回索引数组
  11. print_r(array_values($array));
  12. //in_array检查数组中是否存在某个值返回bool值
  13. echo in_array("blue", $array);//1
  14. //array_search在数组中搜索给定的值,如果成功 返回第一个键名
  15. echo array_search('blue', $array);//0
  16. //array_unique移除数组中重复的值,键名保持不变 只保留第一个键名
  17. //第二个可选参数
  18. // SORT_REGULAR - 按照通常方法比较(不修改类型)
  19. // SORT_NUMERIC - 按照数字形式比较
  20. // SORT_STRING - 按照字符串形式比较
  21. // SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。
  22. print_r(array_unique($array)) ;
  23. //计算数组中的单元数目,或对象中的属性个数
  24. //如果参数既不是数组,也不是实现 Countable 接口的对象,将返回 1 如果 array_or_countable 是 NULL 则结果是 0。
  25. //如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。
  26. echo count($array);//返回5
  27. $food = array('fruits' => array('orange', 'banana'),
  28. 'veggie' => array('carrot', 'collard'));
  29. // 有第二个参数
  30. echo count($food, COUNT_RECURSIVE); // 输出6
  31. echo count($food); // 输出2
  32. //array_count_values() 返回一个数组:数组的键是 array 里单元的值;数组的值是 array 单元的值出现的次数。
  33. print_r(array_count_values($array)) ;
  34. //对数组中所有值求和 ,所有值的和以整数或浮点数的结果返回,array 为空时则返回 0,字符串开头没有数字的按0计算
  35. $res = [1,'2', 'p20', '10p'];
  36. echo array_sum($res); //13
  37. echo array_product($res); //0
  38. //在数组尾部入栈操作
  39. $fruits=[];
  40. array_push($fruits, 'orange' ) ;
  41. array_push($fruits, 'banana', 'apple');
  42. print_r($fruits); //[orange, banana, apple]
  43. //尾部出栈 后进先出
  44. array_pop($fruits);
  45. print_r($fruits); //[orange, banana]
  46. //头部进栈
  47. $fruits=[];
  48. array_unshift($fruits, 'orange');
  49. array_unshift($fruits, 'banana', 'apple');
  50. print_r($fruits);//[banana, apple, orange]
  51. //头部出栈 后进先出
  52. array_shift($fruits);
  53. print_r($fruits);//[apple, orange]
  54. //队列尾部进队 头部出队
  55. $fruits = [];
  56. array_push($fruits, 'orange', 'banana', 'apple');
  57. print_r($fruits);//[orange, banana, apple]
  58. array_shift($fruits);
  59. print_r($fruits);//[ banana, apple]]
  60. //头部进队,尾部出队
  61. $fruits = [];
  62. array_unshift($fruits, 'orange', 'banana', 'apple');
  63. print_r($fruits);//[orange, banana, apple]
  64. array_pop($fruits);
  65. print_r($fruits);//[orange, banana]
  66. //array_rand — 从数组中随机取出一个或多个单元 返回键名
  67. $res = array_rand($array1,2);
  68. print_r($res);
  69. //array_column返回数组中指定的一列
  70. $records = array(
  71. array(
  72. 'id' => 2135,
  73. 'first_name' => 'John',
  74. 'last_name' => 'Doe',
  75. ),
  76. array(
  77. 'id' => 3245,
  78. 'first_name' => 'Sally',
  79. 'last_name' => 'Smith',
  80. ),
  81. array(
  82. 'id' => 5342,
  83. 'first_name' => 'Jane',
  84. 'last_name' => 'Jones',
  85. ),
  86. array(
  87. 'id' => 5623,
  88. 'first_name' => 'Peter',
  89. 'last_name' => 'Doe',
  90. )
  91. );
  92. //以id的值为键名返回last_name这一列的数组
  93. printf('<pre>%s</pre>',print_r(array_column($records,'last_name','id'),true));
  94. //array_replace — 使用传递的数组替换第一个数组的元素 如果传递了多个替换数组,它们将被按顺序依次处理,后面的数组将覆盖之前的值。
  95. $array1 = array("blue", "red", "green", "yellow");
  96. $array2 = [0=>'black', 4=>'white'];
  97. $array3 =[0=>'violet'];
  98. print_r(array_replace($array1,$array2,$array3)) ; //Array ( [0] => violet [1] => red [2] => green [3] => yellow [4] => white )
  99. //array_replace_recursive — 使用传递的数组递归替换第一个数组的元素
  100. $base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "raspberry"), );
  101. $replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));
  102. //递归多维数组
  103. $basket = array_replace_recursive($base, $replacements);
  104. //输出Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry [1] => raspberry ) )
  105. print_r($basket);
  106. //直接替换
  107. $basket = array_replace($base, $replacements);
  108. //输出Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry ) )
  109. print_r($basket);
  110. //array_intersect — 计算数组的交集,键名保留不变,第一个参数数组作为主值。
  111. $arr1 = ['green','red','blue'];
  112. $arr2 = ['red','white','violet'];
  113. print_r(array_intersect($arr1,$arr2));//Array ( [1] => red )
  114. //array_intersect_assoc — 带索引检查计算数组的交集,索引也比较
  115. $arr1 = ['a'=>'green','b'=>'red','c'=>'blue'];
  116. $arr2 = ['b'=>'red','white','biue'];
  117. print_r(array_intersect_assoc($arr1,$arr2));//Array ( [b] => red )
  118. //array_diff — 计算数组的差集,对比 array1 和其他一个或者多个数组,返回在 array1 中但是不在其他 array 里的值。
  119. $array1 = array("a" => "green", "red", "blue", "red");
  120. $array2 = array("b" => "green", "yellow", "red");
  121. $result = array_diff($array1, $array2);
  122. print_r($result);//Array ( [1] => blue )
  123. //array_diff_assoc() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值,键名也用于比较。
  124. $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
  125. $array2 = array("a" => "green", "yellow", "red");
  126. $result = array_diff_assoc($array1, $array2);
  127. print_r($result);//Array ( [1] => blue ) Array ( [b] => brown [c] => blue [0] => red )
  128. //array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
  129. $a = array('green', 'red', 'yellow');
  130. $b = array('avocado', 'apple', 'banana');
  131. $c = array_combine($a, $b);
  132. print_r($c);//Array ( [green] => avocado [red] => apple [yellow] => banana )
  133. //array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
  134. $array1 = array("color" => "red", 2, 4);
  135. $array2 = array("a", "b", "color" => "green", 4);
  136. $result = array_merge($array1, $array2);
  137. print_r($result);//Array ( [color] => green [0] => 2 [1] => 4 [2] => a [3] => b [4] => 4 )
  138. //array_chunk — 将一个数组分割成多个 ,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。
  139. $arr3 = ['a','b','c','d','e'];
  140. print_r(array_chunk($arr3,2));// Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [0] => c [1] => d ) [2] => Array ( [0] => e ) )

2.array_slice和array_splice

  1. //1.array_slice — 从数组中取出一段
  2. //最后一个参数为true 键名索引不变
  3. $array1 = array("blue", "red", "green", "yellow");
  4. $res = array_slice($array1, 1,-1,true);
  5. printf('<pre>%s</pre>', print_r($res, true));// array[1=>red, 2=>green]
  6. //2.array_splice — 去掉数组中的某一部分并用其它值取代
  7. array_splice($array, 1,2,['yellow', 'white']);
  8. print_r($array1);
  9. //把green替换成white,black
  10. array_splice($array1,2,1,['white', 'black']);
  11. print_r($array1);
  12. //把索引1到-1不包括-1的值替换
  13. array_splice($array1,1,-1,['white', 'black']);
  14. print_r($array1);
  15. //在开头插入
  16. array_splice($array1,0,0,'white');
  17. print_r($array1);
  18. //尾部插入
  19. array_splice($array1,4,0,'white');
  20. print_r($array1);

3.四个回调

  1. //array_filter — 用回调函数过滤数组中的单元 ,返回计算结果为true的元素组成的数组
  2. //输出奇数
  3. $arr4 = [1,2,3,4,5,6,7,8,9,10];
  4. $res = array_filter($arr4, function($v){
  5. //二进制按位与
  6. return ($v & 1);
  7. });
  8. print_r($res);
  9. //array_map — 为数组的每个元素应用回调函数
  10. function detail($d, $v){
  11. return "这本书是:$d.价格是:$v";
  12. }
  13. $d = ['红鞋子','秘密花园','草房子'];
  14. $v = [30,50,80];
  15. print_r(array_map("detail",$d,$v)) ;
  16. //array_reduce — 用回调函数迭代地将数组简化为单一的值
  17. $array = array(
  18. 0 => array('id' => '100', 'name' => '张三', 'age' => '30'),
  19. 1 => array('id' => '110', 'name' => '李四', 'age' => '33'),
  20. 2 => array('id' => '120', 'name' => '王五', 'age' => '43'),
  21. 3 => array('id' => '130', 'name' => '赵六', 'age' => '53'),
  22. );
  23. $arr = array_reduce($array, function($carry, $item){
  24. $arr = [
  25. 'name'=>$item['name'],
  26. 'age'=>$item['age']
  27. ];
  28. $id = $item['id'];
  29. $carry[$id] = $arr;
  30. return $carry;
  31. });
  32. printf('<pre>%s</pre>',print_r($arr,true)) ;
  33. //array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
  34. // 主要用于数组成员 的格式化, 不受数组指针影响
  35. $arr = ['id' => '100', 'name' => '张三', 'age' => '30'];
  36. // array_walk(数组, 回调,回调的第三个数组的默认值)
  37. array_walk($arr, function($value,$key,$color){
  38. printf('[%s]=><span style="color:%s">%s</span><br>',$key,$color,$value);
  39. },'blue');

图示

感想

数组函数十分多,有一些还不是很清楚,尤其是array_map和array_walk感觉这两个就返回值不同,用法都差不多,需要多写多记

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:数组操作函数, 还是要结合一些具体使用案例, 比较容易理解, 现在很了解语法和功能, 到时知道用哪个就可以
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!