在按值调用和在php中引用调用之间的区别,还有$$表示?

时间:2011-06-20 04:46:04

标签: php

(1)我想知道php中按值调用和引用调用之间的区别。 PHP是按值调用还是按引用调用?

(2)而且我想知道你的意思是由$$登录php

例如: -

$a = 'name';
$$a = "Paul";
echo $name; 

output is Paul

如上例所示,PHP在PHP上的含义是什么。

5 个答案:

答案 0 :(得分:13)

PHP中的

$$a = b;表示“取$a的值,并将 name 的值变为等于b的变量”。

换句话说:

$foo = "bar";
$$foo = "baz";
echo $bar; // outputs 'baz'

但是,请看看PHP symbol reference

对于按值/引用的调用 - 两者之间的主要区别在于您是否能够修改用于调用该函数的原始项。参见:

function increment_value($y) {
    $y++;
    echo $y;
}

function increment_reference(&$y) {
    $y++;
    echo $y;
}

$x = 1;
increment_value($x); // prints '2'
echo $x; // prints '1'
increment_reference($x); // prints '2'
echo $x; // prints '2'

请注意$x的值increment_value()未被increment_reference()更改,但 的更改&

如此处所示,是否使用call-by-value或call-by-reference取决于被调用函数的定义;声明自己的函数时的默认值是按值调用(但您可以通过{{1}} sigil指定按引用调用)。

答案 1 :(得分:7)

让我们定义一个函数:

function f($a) {
  $a++;
  echo "inside function: " . $a;
}

现在让我们尝试按值调用它(通常我们这样做):

$x = 1;
f($x);
echo "outside function: " . $x;

//inside function: 2
//outside function: 1

现在让我们重新定义函数以通过引用传递变量:

function f(&$a) {
  $a++;
  echo "inside function: " . $a;
}

再次调用它。

$x = 1;
f($x);
echo "outside function: " . $x;

//inside function: 2
//outside function: 2

您可以通过引用函数传递变量,以便函数可以修改变量。 更多信息here

答案 2 :(得分:0)

这意味着$($ a),因此它与$ name相同(因为$ a ='name')。这里有更多解释What does $$ (dollar dollar or double dollar) mean in PHP?

答案 3 :(得分:0)

按值调用表示将值直接传递给函数。被调用函数使用局部变量中的值;对它的任何更改都不会影响源变量。

通过引用调用意味着传递存储实际值的变量的地址。被调用函数使用存储在传递地址中的值;对它的任何更改都会影响源变量。

答案 4 :(得分:0)

按值调用直接传递变量值,不会影响任何全局变量。

按引用调用传递变量的地址会影响可变性 e。