当前位置:Gxlcms > PHP教程 > php自定义数组函数array_column

php自定义数组函数array_column

时间:2021-07-01 10:21:17 帮助过:14人阅读

  1. if(!function_exists('array_column')){
  2. function array_column($input, $columnKey, $indexKey=null){
  3. $columnKeyIsNumber = (is_numeric($columnKey)) ? true : false;
  4. $indexKeyIsNull = (is_null($indexKey)) ? true : false;
  5. $indexKeyIsNumber = (is_numeric($indexKey)) ? true : false;
  6. $result = array();
  7. foreach((array)$input as $key=>$row){
  8. if($columnKeyIsNumber){
  9. $tmp = array_slice($row, $columnKey, 1);
  10. $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null;
  11. }else{
  12. $tmp = isset($row[$columnKey]) ? $row[$columnKey] : null;
  13. }
  14. if(!$indexKeyIsNull){
  15. if($indexKeyIsNumber){
  16. $key = array_slice($row, $indexKey, 1);
  17. $key = (is_array($key) && !empty($key)) ? current($key) : null;
  18. $key = is_null($key) ? 0 : $key;
  19. }else{
  20. $key = isset($row[$indexKey]) ? $row[$indexKey] : 0;
  21. }
  22. } // bbs.it-home.org
  23. $result[$key] = $tmp;
  24. }
  25. return $result;
  26. }
  27. }
  28. // 使用例子
  29. $records = array(
  30. array(
  31. 'id' => 2135,
  32. 'first_name' => 'John',
  33. 'last_name' => 'Doe'
  34. ),
  35. array(
  36. 'id' => 3245,
  37. 'first_name' => 'Sally',
  38. 'last_name' => 'Smith'
  39. ),
  40. array(
  41. 'id' => 5342,
  42. 'first_name' => 'Jane',
  43. 'last_name' => 'Jones'
  44. ),
  45. array(
  46. 'id' => 5623,
  47. 'first_name' => 'Peter',
  48. 'last_name' => 'Doe'
  49. )
  50. );
  51. $firstNames = array_column($records, 'first_name');
  52. print_r($firstNames);
  53. /*
  54. Array
  55. (
  56. [0] => John
  57. [1] => Sally
  58. [2] => Jane
  59. [3] => Peter
  60. )
  61. */
  62. $records = array(
  63. array(1, 'John', 'Doe'),
  64. array(2, 'Sally', 'Smith'),
  65. array(3, 'Jane', 'Jones')
  66. );
  67. $lastNames = array_column($records, 2);
  68. print_r($lastNames);
  69. /*
  70. Array
  71. (
  72. [0] => Doe
  73. [1] => Smith
  74. [2] => Jones
  75. )
  76. */
  77. $mismatchedColumns = array(
  78. array(
  79. 'a' => 'foo',
  80. 'b' => 'bar',
  81. 'e' => 'baz'
  82. ),
  83. array(
  84. 'a' => 'qux',
  85. 'c' => 'quux',
  86. 'd' => 'corge'
  87. ),
  88. array(
  89. 'a' => 'grault',
  90. 'b' => 'garply',
  91. 'e' => 'waldo'
  92. ),
  93. );
  94. $foo = array_column($mismatchedColumns, 'a', 'b');
  95. print_r($foo);
  96. /*
  97. Array
  98. (
  99. [bar] => foo
  100. [0] => qux
  101. [garply] => grault
  102. )
  103. */

人气教程排行