PHP переключатель оператора переменная область видимости - PullRequest
5 голосов
/ 21 февраля 2010

Как в PHP обрабатывается переменная область действия в выражениях switch?

Например, возьмем этот гипотетический пример:

$someVariable = 0;

switch($something) {

    case 1:
        $someVariable = 1;
        break;

    case 2:
        $someVariable = 2;
        break;
}

echo $someVariable;

Будет ли это печатать 0 или 1/2?

Ответы [ 4 ]

7 голосов
/ 21 февраля 2010

Переменная будет одинаковой во всей вашей части кода: в PHP нет переменной области "на блок".

Итак, если $something равно 1 или 2, поэтому вы вводите один из case из switch, ваш код будет выводить 1 или 2.

С другой стороны, если $something не 1 или 2 (например, если он считается 0, что имеет место с кодом, который вы разместили, так как он не инициализирован ни к чему) , вы не войдете ни в один из блоков case; и код выведет 0.

5 голосов
/ 21 февраля 2010

PHP имеет только глобальный и область действия функции / метода .Таким образом, $someVariable внутри блока switch относится к той же переменной, что и снаружи.

Но поскольку $something не определено (по крайней мере, не в предоставленном вами коде), доступ к нему вызывает Неопределенная переменная уведомление, ни один из случаев не совпадает (неопределенные переменные равны null), $someVariable останется неизменным и 0 будет распечатан.

1 голос
/ 21 февраля 2010

Будет напечатано 1 или 2, если вы измените значение $someVariable в операторе switch, и 0, если вы этого не сделаете.

1 голос
/ 21 февраля 2010

Будет напечатано 1 или 2. Переменные в PHP имеют область действия всей функции.

...