2017-10-05 53 views
0

我有此數組:通價值鍵入

$arr = array(0 => array('id' => "AMO"), 1 => array('id' => "PAT")); 

而且我想獲得這一個:

array(
'AMO' => array(), 
'PAT' => array() 
) 

我怎麼能做到這一點,在最短的路?

我可以做一個array_map,然後是一個array_flip和下一個array_walk ..但太長。

回答

2

array_column提取鍵和array_fill_keys來創建新的數組:

$arr = array(0 => array('id' => "AMO"), 1 => array('id' => "PAT")); 

$res = array_fill_keys(array_column($arr, 'id'), []); 
+0

是的!我不知道array_column()函數。魔法。謝謝 ! – Jerry

1

簡單地遍歷數組並其ID到新陣列關鍵

$arr = array(0 => array('id' => "AMO"), 1 => array('id' => "PAT")); 

foreach($arr as $value) 
{ 
    $new_arr[$value['id']] = array(); 
} 
print_r($new_arr); 

DEMO

1

我不知道這背後的邏輯是什麼,但你可以試試這個。

這裏我們使用array_combinearray_keysarray_fill

Try this code snippet here

$result= array_combine(
      array_column($array,"id"),//getting column id 
      array_fill(0, count($array), array())//mapping that keys with empty array 
     ); 
+1

我喜歡這個解決方案+1 – Akintunde007

+1

@Akintunde謝謝..朋友.. :) –