有一個二維數組,以下: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