Почему этот php-код выводится правильно? - PullRequest
0 голосов
/ 08 июня 2019

Йо, я изучаю и переучиваю некоторые старые основы PHP и попал к суперглобалам

Я не совсем понимаю, почему этот код PHP так же, как и то, почему суперглобальный не добавляет 15когда логически 10 не 15, а помощь или указатели, чтобы я мог понять это?

$y = 10;
$x = 5;

$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];

Я пытался исследовать это самостоятельно и принять его, потому что y - это просто имя суперглобального индекса

никто не показывает, кроме того, что в вопросе

<?php 
$x = 5; 
$y = 10; 

function myTest() { 
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; 
} 
myTest(); 
echo $y; // outputs 15 
?>

единственная ошибка здесь - мой мозг

Когда я смотрю на код, я вижу $ GLOBAL ['10'] = $ GLOBAL [' 5 '] + $ GLOBALS ['10'];

Я не понимаю, как 15 может равняться 10.

1 Ответ

0 голосов
/ 08 июня 2019

Когда вы ссылаетесь на переменную вне функции, она ссылается на глобальную переменную. Когда вы ссылаетесь на переменную внутри функции, она обычно ссылается на локальную переменную, если только функция не содержит объявление global, которое делает эту переменную глобальной.

Вы также можете использовать суперглобальный $GLOBALS, который всегда ссылается на глобальные переменные, названные в его ключах. Документация описывает это как:

Ассоциативный массив, содержащий ссылки на все переменные, которые в настоящее время определены в глобальной области действия сценария. Имена переменных являются ключами массива.

Поэтому, когда вы используете $GLOBALS['y'], это то же самое, что и глобальная переменная $y. Ваша функция эквивалентна:

function myTest() { 
    global $x, $y;
    $y = $x + $y;
} 
...