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