PHP:使用引用数组时遇到问题

3
<?php 
$fruits = array(' appLE', 'pear3', 'banana--');
$vegetables = array('pea', 'broccoli   ');
$processArr = array(&$fruits, &$vegetables);
foreach($processArr as &$array)
    foreach($array as &$item)
    {
        $item = preg_replace('/[^a-z]/i', '', $item);
        $item = ucwords(strtolower($item));
    }
echo '<pre>';
print_r($fruits);
print_r($vegetables);

结果:

Array
(
    [0] => Apple
    [1] => Pear
    [2] => Banana
)
Array
(
    [0] => Pea
    [1] => Broccoli
)

问题:

我知道这个$processArr = array(&$fruits, &$vegetables);,意思是传递$fruits$vegetables的引用,如果$processArr改变,$fruits$vegetables也会改变,但我不明白为什么在foreach中还要使用&,有人能解释一下吗?谢谢。

foreach($processArr as &$array)
        foreach($array as &$item)

好问题,提得很好。 - We0
1个回答

3
在 foreach 中使用 & 可以通过引用修改数组中的元素。如果不使用引用,则需要使用数组键来修改值。
foreach ( $data as &$element ) {
  $element = $element + 'foo';
}

等于

foreach ( $data as $key => $element ) {
  $data[$key] = $element + 'foo';
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接