php foreach作为变量

时间:2010-05-27 16:14:31

标签: php foreach

我想使用foreach循环遍历数组列表并为每个数组添加一个元素。

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

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

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

使用$ {$ arrayName} []是最好的方法吗?还有其他选择而不是使用花括号吗?它目前有效,但我只是想知道是否有更好的选择。

由于

5 个答案:

答案 0 :(得分:9)

使用参考。

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

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

答案 1 :(得分:5)

如果你坚持这种结构,我会坚持你在那里做的事情。但评论可能会很好。

如果你可以重新排列东西,为什么不嵌套呢?

$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';
}

答案 2 :(得分:0)

不需要花括号。

$$arrayName[]

原始行可能是PHP中的错误?

虽然我想知道为什么你总是需要这样做......

答案 3 :(得分:0)

有些人会责骂你使用变量变量。你可以这样做:

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

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

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

答案 4 :(得分:0)

没试过,但也应该有效:

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

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

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