2017-10-05 4 views
0

J'ai ce tableau:valeur passe de sous-ensemble à la clé

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

Et je voudrais obtenir celui-ci:

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

Comment pourrais-je faire cela, dans le plus court possible ?

Je peux le faire avec un array_map, suivi par un array_flip et ensuite un array_walk .. mais trop long.

Répondre

2

array_column pour extraire les clés et array_fill_keys pour créer le nouveau tableau:

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

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

Oui! Je ne connaissais pas la fonction array_column(). La magie. Merci ! – Jerry

1

simplement boucle sur tableau et faire son id nouveau tableau clé

$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

Je ne savoir quelle est la logique derrière cela, mais vous pouvez essayer celui-ci.

Ici, nous utilisons array_combine, array_keys et array_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

J'aime cette solution +1 – Akintunde007

+1

@Akintunde Thankss .. friend .. :) –