工做中常常使用到的簡單的方法積累數組
具體是這樣的,以下一個二維數組,是從庫中讀取出來的 : 函數
$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 版權聲明:本文爲博主原創文章,轉載請附上博文連接!