Это довольно просто. Скажем, вы определяете переменную в выражении if
if($stmt = $db->prepare($sql)) {
// do stuff
}
Могу ли я получить доступ к $ stmt ниже инструкции if? Или нужно определить $ stmt выше if?
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
Довольно базовый тест:
if ($stmt = 5) {
var_dump($stmt);
}
var_dump($stmt);
Выходы:
int(5)
int(5)
Да, вы можете "получить доступ к $ stmt ниже оператора if".
if
и оставаться определенным для остальной части функции.