2010-04-27 5 views
2

Ok, j'ai un tableau comme si, mais il est pas garanti d'être mis dans cet ordre tout le temps ...Besoin d'ajouter un tableau dans un autre tableau à une valeur clé spécifiée

$array = array(
    'sadness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'value', 
    ), 
    'happiness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ), 
    'peace' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ) 
); 

Ok, et je voudrais jeter dans ce tableau juste après que la clé du bonheur est définie. Je ne peux pas utiliser la clé de la «paix», car elle doit aller directement après le bonheur, et la paix ne viendra peut-être pas après le bonheur, car ce tableau change.

Alors, voici ce que je dois ajouter après le bonheur ...

$another_array['love'] = array(
    'info' => 'some info', 
    'info2' => 'more info', 
    'value' => 'the value of love' 
); 

Ainsi, la sortie finale après s'entré directement après le bonheur devrait ressembler à ceci:

$array = array(
    'sadness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'value', 
    ), 
    'happiness' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ), 
    'love' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value of love', 
    ), 
    'peace' => array(
     'info' => 'some info', 
     'info2' => 'more info', 
     'value' => 'the value', 
    ) 
); 

Quelqu'un peut-il s'il vous plaît donner moi une main avec ça. Utiliser array_shift, array_pop, ou array_merge ne m'aide pas du tout, puisque ceux-ci vont au début et à la fin du tableau. J'ai besoin de le placer directement après une position KEY dans $ array.

Merci :)

Répondre

2

Vous essayez d'avoir un tableau avec deux clés identiques 'love'. Ce n'est pas possible.

EDIT:

Vous pouvez faire:

$new_array = array(); 
foreach($array as $k => $v) { 
     $new_array[$k] = $v; 
     if($k == 'happiness') { 
       $new_array['love'] = $another_array['love']; 
     } 
} 

working example

+0

Je viens de le remarquer et je l'ai corrigé. Merci, mais la question demeure. – SoLoGHoST

+0

Merci beaucoup, et merci pour l'excellent exemple :) – SoLoGHoST

0

Il me semblait que vous ne comprenez pas que PHP tous les tableaux sont hashes (tableaux associatifs). Donc, l'ordre ne peut pas être influencé. Si vous avez besoin d'avoir un ordre particulier, vous devez utiliser genre etc. pour définir un ordre particulier ou utiliser un simple tableau

$order = array ('love', 'happiness', 'pease'); 

Utilisez le tableau de commande pour accéder $ $ array. Dans le tableau $ order les clés sont 1, 2, 3 ...

+0

Alors attendez, vous dites que vous ne pouvez pas utiliser un foreach pour ajouter le $ another_array dans le tableau $? Je veux dire, vous ne pourriez pas utiliser la fonction key() en quelque sorte et current() et peut-être next() fonctions php ??? – SoLoGHoST

+0

Ou même construire un tableau entièrement différent et que définir $ array à cet autre tableau construit ?? – SoLoGHoST

+0

Donc rien de tout cela n'est possible? – SoLoGHoST

Questions connexes