Мне нужна помощь в понимании этого примера кода PHP:
$bar = "outside";
function foo($bar) {
$bar = "inside";
return $bar;
}
$bar = foo($bar);
echo $bar
Я предсказывал, что $ bar будет эхом "снаружи", но он эхом "внутри", и я не понимаю, почему. $ bar изначально имеет значение "outside" (определенное как глобальное). Затем вызывается функция foo (сразу после ее определения) и принимает параметр, который также называется $ bar. $ bar было присвоено значение "outside", поэтому значение "outside" передается в foo. Тогда у нас есть выражение $ bar = "inside", которое для меня не имеет смысла, потому что кажется, что оно означает "outside" = "inside", и как вы можете присвоить строку другой строке? Затем функция возвращает $ bar, которая, я думаю, должна иметь значение "outside", поскольку именно это было передано в foo. Как он приобрел значение «внутри», я не могу понять.
Редактировать : Мой вопрос не о переменной области видимости. Что мне интересно, так это то, почему значение параметра не передается функции в строке 3, давая бессмысленный оператор "outside" = "inside". Основываясь на полученных мною ответах, я могу только предположить, что это потому, что такое утверждение недопустимо в PHP (и, вероятно, во всех других языках), поэтому интерпретатор просто не делает этого (несмотря на то, что нормально интерпретатора * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Поведение - это замена параметров, где бы они ни находились
Спасибо