PHP 獲取二維數組中某個key的集合

工做中常常使用到的簡單的方法積累數組

具體是這樣的,以下一個二維數組,是從庫中讀取出來的 : 函數

$user = array(
0 => array(
'id' => 1,
'name' => '楊過',
'email' => 'yangguo@sina.com',
),
1 => array(
'id' => 2,
'name' => '郭靖',
'email' => 'guojing@163.com',
),
2 => array(
'id' => 5,
'name' => '七公',
'email' => 'qigong@qq.com',
),
......
);性能

那麼,如今有這樣的兩個需求:.net

1)獲取索引"id"的集合,而且保存爲一個一位數組,即獲得 array(1,2,5)blog

不知道各位朋友會怎麼寫呢?索引

若是是之前個人寫法就是直接 foreach,而後 array_push 一個個的往一個數組變量裏塞。這樣也能實現。但這樣的寫法很影響性能,由於使用 PHP 原生的函數確定比循環效率高 :io

$ids = array();
$ids = array_map('array_shift', $user);function

如上代碼就能夠獲得咱們想要的結果了,關於函數的使用想看手冊。
其實這裏面還有一種方案,使用 array_column 函數,不過此函數須要 PHP 版本要求,(PHP 5 >= 5.5.0) :效率

$ids = array();
$ids = array_column($user, 'id');email

這樣的話,效率確定會更高了。


2)獲取索引"name"的集合,而且保存爲一個一位數組,即獲得 array('楊過','郭靖',‘七公’)

按照,我以往的寫法,仍是同樣的foreach,而後 array_push 一個個的往一個數組變量裏塞。請看高效率的代碼 : 

$names = array();
$names = array_reduce($user, create_function('$v,$w', '$v[$w["id"]]=$w["name"];return $v;'));

獲得結果:
array(
1 => '楊過',
2 => '郭靖',
5 => '七公',
);

常常 foreach 的童鞋,趕快更正吧!

本文來自CSDN,轉載請註明出處!http://blog.csdn.net/liruxing1715/article/details/22925575--------------------- 做者:ruxingli 來源:CSDN 原文:https://blog.csdn.net/liruxing1715/article/details/22925575 版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索