Intereting Posts
Yii как обновить все записи? Получить данные Youtube VideoID в массиве Проверка значения атрибута Xpath с переменной, переданной с помощью PHP Выполнять пакетный скрипт с правами администратора в Windows 8.1 с помощью exec () Сохраните изображение из Flash, отправьте его на PHP и верните URL-строку во Flash Поиск лучшего способа хранения таблицы с использованием PHP и MySQL Сообщение ajax в laravel 5 возвращает ошибку 500 (Внутренняя ошибка сервера) PHP-функция Аргумент массива PHP API Youtube Uploads, исключение: Не удалось запустить возобновляемую загрузку, загрузка должна быть отправлена ​​на URL-адрес загрузки Означает ли это SOAP Fault, что я думаю, что это значит? Doctrine 2 DQL – как выбрать обратную сторону однонаправленного запроса «многие ко многим»? Проверка правильности имени JQuery Случайное время и дата между двумя значениями даты Добавить видео в список избранных пользователей / Like на YouTube Записывать значения базы данных в файл .ini в соответствии с параметром INI с помощью PHP Codeigniter

Если вы создаете переменную внутри оператора if, она доступна вне инструкции if?

Если у вас есть оператор if:

<?php $a = 1; $b = 2; if ($a < $b) { $c = $a+$b; } ?> 

Вы могли бы получить доступ к переменной $ c вне инструкции if следующим образом:

 <?php $a = 1; $b = 2; if ($a < $b) { $c = $a+$b; } echo $c ?> 

В PHP, if него нет собственной области. Так что да, если вы определите что-то внутри оператора if или внутри блока, тогда он будет доступен так же, как если бы вы определили его вне (если, конечно, код внутри блока или внутри оператора if будет запущен).

Проиллюстрировать:

 if (true) { $a = 5; } var_dump($a == 5); // true 

Условие оценивается как true , поэтому код внутри блока запускается. Определяется переменная $a .

 if (false) { $b = 5; } var_dump(isset($b)); // false 

Условие оценивается как false , поэтому код внутри блока не запускается. Переменная $b не будет определена.

 if ($c = 5) { } var_dump($c == 5); // true 

Код внутри условия запускается, и $c определяется как 5 ( $c = 5 ). Несмотря на то, что назначение выполняется внутри оператора if , значение выживает на улице, потому что if него нет области видимости. То же самое происходит for , например, for ($i = 0, $i < 5; ++$i) . $i выйдет за пределы цикла for , потому что for него тоже нет области.

 if (false && $d = 5) { } var_dump(isset($d)); // false 

false коротких замыканий и выполнение не достигает $d = 5 , поэтому переменная $d не будет определена.

Подробнее о области PHP читайте на странице руководства по области переменных .

Область PHP полностью функциональна. Это не то же самое, что C или Java, где он локален для блока, в который вложены переменные.

Для области PHP:

 // Global variable $a = 0; function f() { // Cannot be accessed outside of f() if (true) $b = 0; // However, it can still be accessed anywhere in f() $b += 1; } 

Если вы хотите, чтобы переменная была глобальной, просто используйте глобальное ключевое слово:

 // Global variable $a = 0; function f() { // Use $a from global scope global $a; // Modifies global $a $a += 1; } function g() { // Use $b from global scope, even though it hasn't been defined yet global $b; // Can be accessed outside of g() $b = 0; // Cannot be accessed outside of g(); this $a "shadows" the global version // The global $a is still 0 $a = 1; } 

Если был выполнен оператор if содержащий переменную, то да, вы можете получить доступ к переменной за пределами оператора if. Вот мысль о том, почему она работает именно так. Во многих языках программирования вы можете «объявить» переменную перед ее использованием, просто чтобы компилятор знал, что она есть. Например, в Java вы можете объявить «int», а затем использовать его так:

 int number; if(true) number = 5; 

В Java вы должны объявить такую ​​переменную, прежде чем использовать ее в инструкции if-then. В php, однако, на самом деле нет способа сделать это. Поскольку php динамически типизирован, вы не можете написать int $number . В Java компьютер выделяет 32-битный блок памяти (размер int) при объявлении переменной. По-моему, в php память не выделяется до тех пор, пока что-то не будет храниться в переменной. Лучший эквивалент «объявления» переменной php, о которой я мог думать, просто должен был бы написать:

 $number; //This is NOT needed if(true) $number = 5; 

Но когда вы смотрите на код, кажется странным просто написать $number . Я думаю, что компьютер будет думать, что это так же странно, потому что, как я уже говорил, это динамически типизированный язык, и поэтому ему не нужно выделять целую кучу памяти для числа. Поэтому вы можете просто оставить это так:

 if(true) $number = 5; 

Зависит.

В PHP шансы да, это было бы, хотя, конечно, если isnt <b, то c не будет существовать, когда вы попадете в строку echo c, и ваш код будет жаловаться.

Однако на большинстве языков это не скомпилировалось по этой причине