在foreach中的一个变量之前的&符号

我在foreach中的一个变量前看到了一个&符号。 我知道&符号用于获取前面定义的变量地址。

我看到过这样的代码:

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}

// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element

?>

我只需要知道$ value之前的用法。 我没有看到之前声明的任何变量来获取变量地址。

请帮助我为什么宣布这样。 任何帮助,将不胜感激。


foreach块中的&符号允许直接操作数组,因为它通过引用获取每个值。

$arr = array(1,2,3,4);
foreach($arr as $value) {
    $value *= 2;
}

在这种情况下,每个值都乘以2,然后立即丢弃。


$arr = array(1,2,3,4);
foreach($arr as &$value) {
    $value *= 2;
}

由于这是通过引用传入的,因此数组中的每个值都会被实际更改(因此$arr变为array(2,4,6,8)


&符号不是PHP独有的,实际上用于其他语言(如C ++)。 它表明你正在通过引用传递一个变量。 只需谷歌“通过参考的PHP传递”,并且你需要向你解释这一切的东西都会在那里。 一些有用的链接:

  • http://www.php.net/manual/en/language.references.pass.php
  • PHP变量是通过值还是通过引用传递的?
  • http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/(这是针对C ++的,但同样的原则适用于PHP)
  • 链接地址: http://www.djcxy.com/p/59553.html

    上一篇: Ampersand before a variable in foreach php

    下一篇: Reference — What does this symbol mean in PHP?