【PHP】如何獲取二維數組中某個key的集合

有一個二維數組,以下:php

$arr = array(
  0 => array(
    'id' => 1,
    'a'  => 'xxxx',
    'b'  => 'abc',
  ),
  1 => array(
    'id' => 2,
    'a'  => 'yyyy',
    'b'  => 'abcd',
  ),
  2 => array(
    'id' => 4,
    'a'  => 'zzzz',
    'b'  => 'abcde',
  ),
);

如今我想將索引爲‘id’的值取出來,組成一個一維數組,即array(1,2,4)。若是按照之前的寫法,使用foreach,而後一個一個的array_push。雖然這樣也能實現,但無疑十分影響性能,由於使用 PHP 原生的函數確定比循環效率高。 數組

1.使用array_map,代碼以下:函數

$ids = array_map('array_shift',$arr);

這種方法只適合取數組第一個索引的數據,由於array_shift是一個回調方法,它的做用是刪除數組中的第一個元素,並返回被刪除元素的值。性能

2.還有一種是使用array_column(),它能夠返回輸入數組中某個單一列的值,不過這個方法對PHP版本有要求(PHP > 5.5.0):code

$ids = array_column($arr,'id');

這種辦法無疑效率更高了。索引

附:字符串

若是我想以‘id’爲鍵值,並取其對應的‘a’的數據,組成一個一維數組,則能夠這麼作:io

$newArr = array_reduce($arr, create_function('$v,$w', '$v[$w["id"]]=$w["a"];return $v;'));

array_reduce() 函數向用戶自定義函數發送數組中的值,並返回一個字符串。它還能夠設置第三個參數,表示初始值,但在PHP 5.3.0 以前的版本只支持整數。function

相關文章
相關標籤/搜索