可能重复:
Reference - What does this symbol mean in PHP?PHP - 与号在foreach循环变量之前
我需要知道为什么我们在foreach循环使用符号变量之前
foreach ($wishdets as $wishes => &$wishesarray) {
foreach ($wishesarray as $categories => &$categoriesarray) {
}
}
感谢
可能重复:
Reference - What does this symbol mean in PHP?PHP - 与号在foreach循环变量之前
我需要知道为什么我们在foreach循环使用符号变量之前
foreach ($wishdets as $wishes => &$wishesarray) {
foreach ($wishesarray as $categories => &$categoriesarray) {
}
}
感谢
这意味着它通过引用传递而不是值... IE对变量的任何操作都会影响原始。这与任何修改不影响原始对象的值不同。
这是问了很多次的计算器。
它是用来在数组的单个实例更改应用到主阵列..
由于:
//现在的变化不会影响阵列$ 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..
这个例子会告诉你区别
$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
不将_by reference_语法往往造成像错误:“不能创建从字符串偏移/引用”? – 2017-07-19 08:57:46
对于你的问题的代码,有可能是因为给予内foreach循环是空的没有明确的答案。
我用你的代码是看到,内foreach
遍历一个参考,而不是常见的方式是什么。
我建议你把foreach
PHP Manual page的读,它涵盖了所有四种情况:
foreach($standard as $each);
foreach($standard as &$each); # this is used in your question
$reference = &$standard;
foreach($reference as $each);
$reference = &$standard;
foreach($reference as &$each); # this is used in your question
要添加,“通过引用”意味着它指的是该变量的相同分配的内存块被称为 – Prof83 2012-01-07 11:27:09
为反对“按价值”,这意味着变量的副本是由PHP在新的内存块中创建的。 – Kaii 2012-01-07 11:34:14
有的基准是如何在问题的示例代码传递两种方式,[I概述了两个](http://stackoverflow.com/a/8769347/367456)。 – hakre 2012-01-07 11:37:07