php foreach как переменная - PullRequest
3 голосов
/ 27 мая 2010

Я бы хотел использовать foreach для зацикливания списка массивов и добавления элемента в каждый массив.

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

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

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

Является ли использование $ {$ arrayName} [] лучшим способом сделать это? Есть ли другой вариант, вместо использования фигурных скобок? В настоящее время это работает, но мне просто интересно, есть ли лучшая альтернатива.

Спасибо

Ответы [ 5 ]

9 голосов
/ 27 мая 2010

Использовать ссылки.

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

foreach($myArrays as &$arr) {
  $arr[] = 'newElement';
}
5 голосов
/ 27 мая 2010

Если вы застряли в этой структуре, я бы сказал, придерживайтесь того, что вы там делаете. Но комментарий может быть хорошим.

Если вы можете переставить вещи, почему бы не вложить их?

$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';
}
0 голосов
/ 27 мая 2010

Не пробовал, но тоже должно работать:

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

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

foreach($myArrays as $key => $value) {
    $$value[] = 'newElement';
}
0 голосов
/ 27 мая 2010

Некоторые люди будут ругать вас за использование переменных переменных. Вы могли бы сделать что-то вроде этого:

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

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

for($i=0; $i<sizeof($myArrays); ++$i) {
    $myArrays[$i][] = 'newElement';
}
0 голосов
/ 27 мая 2010

Вьющиеся фигурные скобки не нужны.

$$arrayName[]

Исходная строка может быть ошибкой в ​​PHP?

Хотя я удивляюсь, зачем тебе все равно это делать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...