ホームページ  >  記事  >  バックエンド開発  >  PHPカスタム配列関数array_column

PHPカスタム配列関数array_column

WBOY
WBOYオリジナル
2016-07-25 08:54:331288ブラウズ
  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' => 'サリー',
  38. 'last_name' => 'スミス' ),
  39. array(
  40. 'id' => 'first_name' => 'ジェーン' ,
  41. 'last_name' => 'ジョーンズ'
  42. ),
  43. array(
  44. 'id' => 5623,
  45. 'first_name' => 'ピーター',
  46. 'last_name' => 'Doe'
  47. )
  48. );
  49. $firstNames = array_column($records, 'first_name');
  50. print_r($firstNames);
  51. /*
  52. Array
  53. (
  54. [0] => ジョン
  55. [1] => サリー
  56. [2] => ジェーン
  57. [3] => ピーター
  58. )
  59. */
  60. $records = array(
  61. array(1, 'ジョン', 'Doe'),
  62. array(2, 'サリー', 'スミス' ),
  63. array(3, 'Jane', 'Jones')
  64. );
  65. $lastNames = array_column($records, 2);
  66. print_r($lastNames);
  67. /*
  68. Array
  69. (
  70. [0] => ; ドウ
  71. [1] =>スミス
  72. [2] => Jones
  73. )
  74. */
  75. $mismatchedColumns = array(
  76. array(
  77. 'a' => 'foo',
  78. 'b' => 'bar',
  79. 'e' => 'baz'
  80. ) ,
  81. array(
  82. 'a' => 'qux',
  83. 'c' => 'qux',
  84. 'd' => 'corge'
  85. ),
  86. array(
  87. 'a' => ' grault',
  88. 'b' => 'garply',
  89. 'e' => 'waldo'
  90. ),
  91. );
  92. $foo = array_column($mismatchedColumns, 'a', 'b');
  93. print_r ($foo);
  94. /*
  95. Array
  96. (
  97. [bar] => foo
  98. [0] => qux
  99. [garply] => grault
  100. )
  101. */
复制發
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。