PHP:使用引用数组的问题


php: issue with Using Reference Arrays

<?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)

foreach 中的&允许使用引用修改数组中的元素。如果不使用引用,要修改值,则必须使用数组键。

foreach ( $data as &$element ) {
  $element = $element + 'foo';
}

等于

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