$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
$ key是否意味着数组的索引?
答案 0 :(得分:11)
&$variable_name
是PHP通过引用传递的方式:
请参阅:http://php.net/manual/en/language.references.pass.php
有关更多参考资料的解释,请参阅: http://www.php.net/manual/en/language.references.whatare.php
答案 1 :(得分:11)
$arr = array(1, 2, 3, 4);
foreach ($arr as $value)
$value = $value * 100;
echo implode(' ', $arr); // 1 2 3 4
foreach ($arr as &$value)
$value = $value * 100;
echo implode(' ', $arr); // 100 200 300 400
得到了吗?
答案 2 :(得分:3)
你有两个不同的问题。要回答关于&符号的第一个问题(&
):
每当您看到变量前面传递的&
时,就意味着您将使用实际变量而不是它的副本。在您的示例中,$value
通常是实际$value
的副本,因此对该变量所做的任何更改都不会影响该数组。但是当你将&
放在它前面时,你正在处理实际的数组数据。
要回答第二个问题,是的,$key
是数组的索引,无论是数字还是关联。
答案 3 :(得分:0)
&告诉PHP使$ value成为对实际数组项的引用,而不是数组项的副本。如果没有&,您的代码实际上不会修改数组中的值。
答案 4 :(得分:0)
&
允许您更改$value
中的值。您可以通过尝试而不进行实验。这被称为通过引用传递。
此处的示例对于解释$key
并不是很好,因为您显示的是常规数组而不是关联数组。这是一个更好的例子来说明$key
。
$a = array(
"red" => 1,
"green" => 2,
"blue" => 3,
"white" => 17 /* btw, I patent the white pixel! */
);
foreach ($a as $key => $value) {
echo "key $key, val $value";
}