değişkeni olarak php foreach

5 Cevap php

Ben bir dizi listesi olsa döngü foreach kullanın ve her diziye bir öğe eklemek istiyorum.

$tom = array('aa','bb','cc');
$sally = array('xx','yy','zz');

$myArrays = array('tom','sally');

 foreach($myArrays as $arrayName) {
     ${$arrayName}[] = 'newElement';
 }

$ {$ ArrayName} kullanımı [] en iyi yolu, bunu yapmak için mi? Yerine kıvırcık parantez kullanarak daha başka bir seçenek var mı? Şu anda çalışıyor ama daha iyi bir alternatif olup olmadığını merak ediyorum.

Teşekkürler

5 Cevap

Referansları kullanın.

$myArrays = array(&$tom, &$sally);

foreach($myArrays as &$arr) {
  $arr[] = 'newElement';
}

Eğer bu yapıya sıkışmış iseniz, ben orada ne yaptığınızı için sopa söyleyebilirim. Ama comment güzel olabilir.

Şeyleri yeniden düzenleyebilir, neden yuva onları?

$tom = array('aa','bb','cc');
$sally = array('xx','yy','zz');

$myArrays = array(&$tom, &$sally); // store the actual arrays, not names

// note the & for reference, this lets you modify the original array inside the loop
foreach($myArrays as &$array) {
    $array[] = 'newElement';
}

Hiçbir kaşlı gerekli.

$$arrayName[]

Orijinal çizgi belki PHP bir hata?

Hiç zaten bunu yapmak gerekir merak ediyorum rağmen ...

Bazı insanlar değişken değişkenleri kullandığınız için teşekkür azarlamak olacaktır. Böyle bir şey yapabilirsiniz:

$tom = array('aa','bb','cc');
$sally = array('xx','yy','zz');

$myArrays = array(&$tom, &$sally);

for($i=0; $i<sizeof($myArrays); ++$i) {
    $myArrays[$i][] = 'newElement';
}

Çok çalıştı, ama çalışması gerekir Not:

$tom = array('aa','bb','cc');
$sally = array('xx','yy','zz');

$myArrays = array('tom','sally');

foreach($myArrays as $key => $value) {
    $$value[] = 'newElement';
}