2010-01-06 4 views
0

Salut J'essaie de faire défiler une matrice et de définir une valeur de clé. Question très basique.Valeur de réglage dans le tableau Php imbriqué

Le code que j'ai essayé est ci-dessous.

http://pastebin.com/d3ddab156

<?php 
$testArray = array("bob1" => array('name' => "bob1", 'setTest' => '2')); 

foreach($testArray as $item) 
{ 
    $item['setTest'] = 'bob'; 
} 

print_r($testArray); 

j'imagine que je manque quelque chose de stupide ici et il va être un D'oh! moment pour moi. Qu'est-ce qui va pas avec ça?

Merci.

+0

Pouvez-vous mettre votre code dans votre question plutôt que sur pastebin? Merci! –

+0

Correction que pour vous – Ikke

Répondre

3

vous faites:

$testArray = array("bob1" => array('name' => "bob1", 'setTest' => '2'));  

foreach($testArray as $item) 
{ 
    $item['setTest'] = 'bob'; 
} 

print_r($testArray); 

$ item est une copie. Vous changez la copie, pas le tableau réel. Essayez ceci:

$testArray = array("bob1" => array('name' => "bob1", 'setTest' => '2'));  

foreach($testArray as $key => $item) 
{ 
    $testArray[$key]['setTest'] = 'bob'; 
} 

print_r($testArray); 
+0

merci c'est exactement ce que je voulais. – Bookworm

1

Ou, si vous avez beaucoup de données dans le tableau et que vous voulez éviter de créer une copie complète de chaque élément sur chaque itération, simplement itérer sur chaque élément comme référence. Alors seulement une référence à cet élément est créé i la mémoire et vous pouvez manipuler directement l'élément de tableau en utilisant $ article:

$testArray = array("bob1" => array('name' => "bob1", 'setTest' => '2'));  

foreach($testArray as &$item) 
{ 
    $item['setTest'] = 'bob'; 
} 

print_r($testArray); 

REMARQUE: assurez-vous de unset $ item après la boucle de sorte que vous ne modifiez pas inadvertantly la tableau plus tard en utilisant ce nom de variable.

Questions connexes