在foreach循环中的变量前加上&符号

可能重复:
参考 - 这个符号在PHP中的含义是什么?

我需要知道为什么我们在foreach循环中的变量之前使用&符号

foreach ($wishdets as $wishes => &$wishesarray) {
    foreach ($wishesarray as $categories => &$categoriesarray) {

    }
}

谢谢


这个例子会告诉你不同之处

$array = array(1, 2);
foreach ($array as $value) {
    $value++;
}
print_r($array); // 1, 2 because we iterated over copy of value

foreach ($array as &$value) {
    $value++;
}
print_r($array); // 2, 3 because we iterated over references to actual values of array

看看这里的PHP文档:http://pl.php.net/manual/en/control-structures.foreach.php


这意味着它通过引用传递而不是值... IE对变量的任何操作都会影响原始内容。 这与任何修改不影响原始对象的值不同。

这在stackoverflow上被问到很多次。


它用于将单个数组实例中的更改应用于主数组。

如:

//现在更改不会影响数组$ wishesarray

foreach ($wishesarray as $id => $categoriy) {
      $categoriy++;
}
print_r($wishesarray); //It'll same as before..

但现在的变化也会反映在数组$ wishesarray中

foreach ($wishesarray as $id => &$categoriy) {
      $categoriy++;
}
print_r($wishesarray); //It'll have values all increased by one..
链接地址: http://www.djcxy.com/p/10207.html

上一篇: Ampersand before the variable in foreach loop

下一篇: What is <=> (the 'Spaceship' Operator) in PHP 7?