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