başka bir döngü gelen bir foreach döngüsü içinde ['name'] görüntüler

2 Cevap

her bir partent içerdiği bir foreach döngü içinde endeksler değerleri kullanmak mümkündür. Aşağıdaki senaryoya bakmak ve kullanmak için her çocukta görüyoruz echo'<div>' .$product['name'] . '</div>'; $product[' name ']; her ebeveyne aittir zaman. Bu mümkün mü? Ben çocuk endeksi ['name '] kullanmak için arıyorum foreach().

foreach($tree as $product){

    echo '<div>' . $product['name']. '</div>';

    foreach($product['variery'] as $variety) 

    {
        echo'<div>'. $variery['image'] . '</div>';
        echo'<div>' .$product['name'] . '</div>';

    } // end of child for each

} //end of parent for each

2 Cevap

Bir üst döngü içinde bir değişken tanımlamak Evet, eğer, o zaman sürece bu çocuk ilmikler değişkeni yeniden tanımlamak değil AS, herhangi bir alt döngüler kendi değerini muhafaza edecektir. Bildiğim kadarıyla sizin iç döngü söz konusu olduğunda, $ ürün "yerel" bir döngünün yaşam için sürekli, yani $ ürün ['isim'] ve $ ürün ['variery'] olan dış sonraki yineleme kadar değişmeyecek döngü.

Küçük bir performans ipucu olarak, sizin yankı tablolar içinde dize birleştirme yapmak zorunda değilsiniz. echo birden çok virgülle ayrılmış değerleri kabul edecektir. Aşağıdaki tam olarak aynı çalışma ve iki bitiştirmelerini yükü olmaz:

echo '<div>', $product['name'], '</div>'; // notice the commas

Bu küçük, ama bu bir ağır gitti kod yolu olursa, kaydettiğiniz herhangi döngüleri iyi bir şey vardır.

Evet, bu mümkün değildir.

Hatta döngünün dışında $product (son değer atanan tutar) tanımlanır.

Question from comments: Can I also do this?

value="', $variety['price'], $variety['variety'], $product['name'],'";

Yukarıdaki codee çocuk döngü içinde gitmek istiyorum.

Answer: Yes, but this syntax will lead to error. To use associative array in the double quotes skip the single quotes.

value="', $variety[price], $variety[variety], $product[name],'";

Veya noktalar kullanın:

value="', " . $variety[price] . ", " . $variety[variety] . ", " . $product[name] . ",'";