İç içe Php Array değerini ayarlama

2 Cevap

Merhaba ben bir dizi döngü çalışıyor ve bir tuşlarına değeri ayarlamak ediyorum. Çok temel bir soru.

Denedim Kodu altındadır.

http://pastebin.com/d3ddab156

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

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

print_r($testArray);

Ben burada aptal bir şey eksik hayal ediyorum ve bir D'oh olacak! Benim için bir an. Bunun nesi yanlış?

Teşekkürler.

2 Cevap

Yapmanız:

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

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

print_r($testArray);

$ Öğe bir kopyasıdır. Sen kopya değil, gerçek dizi değiştirin. Bu deneyin:

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

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

print_r($testArray);

Eğer dizide çok fazla veri var ve her yineleme, her eleman tam bir kopyasını oluşturma önlemek istiyorsanız ya, sadece bir referans olarak her öğe üzerinde yineleme. Sonra bu öğeye sadece bir referans i bellek oluşturulur ve doğrudan $ öğesini kullanarak dizi elemanını işleyebilirsiniz:

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

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

print_r($testArray);

NOT: Yanlışlıkla bu değişken adını kullanarak daha sonra diziyi değiştirmez böylece döngü sonra unset $ öğeye emin olun.