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

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

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

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

1

Решение

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
3

Другие решения

Довольно простой тест:

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

var_dump($stmt);

Выходы:

int(5)
int(5)

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

1

По вопросам рекламы [email protected]