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但我不明白为什么还要使用 &in foreach,谁能给我解释一下?谢谢。

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

1 回答 1

3

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

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

等于

foreach ( $data as $key => $element ) {
  $data[$key] = $element + 'foo';
}
于 2013-08-16T09:19:08.563 回答