(1) Я хочу знать, в чем разница между вызовом по значению и вызовом по ссылке в php
. PHP работает по вызову по значению или по ссылке?
(2) И также я хочу знать, что вы имеете в виду под $$ sign в php
Например:-
$a = 'name'; $$a = "Paul"; echo $name; output is Paul
Как и выше пример, что означает u на $$ на PHP.
$$a = b;
в PHP означает «принять значение $a
и установить переменную, чье имя – это значение, равное b
».
Другими словами:
$foo = "bar"; $$foo = "baz"; echo $bar; // outputs 'baz'
Но да, взгляните на ссылку на символ PHP .
Что касается вызова по значению / ссылке – основное различие между ними заключается в том, можете ли вы изменить исходные элементы, которые использовались для вызова функции. Видеть:
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-reference через &
sigil).
Определим функцию:
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
Вы можете передать переменную по ссылке на функцию, чтобы функция могла изменять переменную. Больше информации здесь .
Это означает $ ($ a), поэтому он совпадает с именем $ (так как $ a = 'name'). Больше объяснений здесь Что означает $$ (доллар или двойной доллар) в PHP?