PHP 獲取二維陣列中某個key的集合

2022-08-31 09:18:08 字數 1729 閱讀 1997

本文為**分享,也是在工作中看到一些「大牛」的**,做做分享。

具體是這樣的,如下乙個二維陣列,是從庫中讀取出來的。

**清單:

[php]view plain

copy

$user = array(  

0 => array(  

'id'    => 1,  

'name'  => '張三',  

'email' => '[email protected]',  

),  

1 => array(  

'id'    => 2,  

'name'  => '李四',  

'email' => '[email protected]',  

),  

2 => array(  

'id'    => 5,  

'name'  => '王五',  

'email' => '[email protected]',  

),  

......  

);  

上面的陣列格式,主要大家玩過 php+mysql,就肯定非常熟悉了。

那麼,現在有這樣的兩個需求:

1)獲取索引"id"的集合,並且儲存為乙個一位陣列,即得到 array(1,2,5)

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

如果是以前我的寫法就是直接 foreach,然後 array_push 乙個個的往乙個陣列變數裡塞。這樣也能實現。但這樣的寫法很影響效能,因為使用 php 原生的函式肯定比迴圈效率高。

**清單:

[php]view plain

copy

$ids = array();  

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

如上**就可以得到我們想要的結果了,關於函式的使用想看手冊。

其實這裡面還有一種方案,使用 array_column 函式,不過此函式需要 php 版本要求,(php 5 >= 5.5.0)

**清單:

[php]view plain

copy

$ids = array();  

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

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

2)獲取索引"name"的集合,並且儲存為乙個一位陣列,即得到 array('張三','李四',『王五』)

按照,我以往的寫法,還是一樣的foreach,然後 array_push 乙個個的往乙個陣列變數裡塞。請看高效率的**清單。

**清單:

[php]view plain

copy

$names = array();  

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

得到結果:

[php]view plain

copy

array(  

1 => '張三',  

2 => '李四',  

5 => '王五',  

);  

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

PHP 獲取二維陣列中某個key的集合

對於二維陣列的操作問題,一般的做法是直接foreach,乙個個的往乙個陣列變數裡塞進行賦值,這種非常常見的做法,但這樣的寫法很影響效能,因為使用 php 原生的函式肯定比迴圈效率高。下面介紹如何使用原生的函式實現此需求。事例陣列 arr array 0 array id 11,name userna...

獲取二維陣列中某個鍵的和

今天主要是做下總結 其實php版本大於5 可以用 array column 很簡單 在用個array sum 就好了 但是 我們用的是5.2 沒辦法 只能用array map 了 中間也想過先遍歷 做出來了 但是 也想換換其他的方式,就用這個函式寫了下 array size 3 0 array si...

php二維陣列按照某個鍵值排序

php二維陣列按照某個鍵值排序 arr array name 小壞龍 age 28 array name 小壞龍2 age 14 array name 小壞龍3 age 59 array name 小壞龍4 age 23 array name 小壞龍5 age 23 array name 小壞龍6 ...