2017-10-05 51 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谢谢..朋友.. :) –