PHP-декларатор в области действия if-оператора

1

Это довольно просто. Скажем, вы определяете переменную в выражении if

if($stmt = $db->prepare($sql)) {
   // do stuff
}

Могу ли я получить доступ к $ stmt ниже инструкции if? Или нужно определить $ stmt выше if?

  • 2
    Почему бы тебе не попробовать это? Но да, $ stmt будет определяться if и оставаться определенным для остальной части функции.
  • 0
    @Marc BI пытался, но ошибка $ stmt-> ничего не записывала в мой текстовый файл, поэтому я был подозрительным.
Теги:
scope
language-construct

2 ответа

3
Лучший ответ

PHP не имеет области уровня блока, а только области уровня. $stmt будет доступен где-нибудь ниже этого оператора if (в и из if).

Однако что-то иметь в виду, если вы определяете новые переменные внутри блока if, будет существовать только в том случае, if равно true.

Например:

<?php
$var1 = true;
if ($var2 = false) { 
    $var3 = true; // this does not get executed
} else {
    $var4 = 5;
}
var_dump($var1); // true
var_dump($var2); // false
var_dump($var3); // ERROR - undefined variable $var3
var_dump($var4); // 5
  • 0
    Таким образом, вы можете объявить внутри блока if, и переменная будет существовать ниже if? Не знал этого.
1

Довольно базовый тест:

if ($stmt = 5) {
    var_dump($stmt);
}

var_dump($stmt);

Выходы:

int(5)
int(5)

Да, вы можете "получить доступ к $ stmt ниже оператора if".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню