Объем переменной оператора переключения PHP

В PHP, как переменный объем обрабатывается в операторах переключения?

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

$someVariable = 0;

switch($something) {

    case 1:
        $someVariable = 1;
        break;

    case 2:
        $someVariable = 2;
        break;
}

echo $someVariable;

Это распечатало бы 0 или 1/2?

5
задан Philip Morton 21 February 2010 в 15:00
поделиться

4 ответа

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

Итак, если $ something равно 1 или 2 , вы вводите один из случаев из switch , ваш код выдаст 1 или 2.

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

7
ответ дан 18 December 2019 в 13:13
поделиться

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

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

5
ответ дан 18 December 2019 в 13:13
поделиться

Будет выведено 1 или 2. Переменные в PHP охватывают всю функцию.

1
ответ дан 18 December 2019 в 13:13
поделиться

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

1
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: