Если установить $var
к string
в PHP, что переменная будет вычисляться true
в любых условиях:PHP: Понимание строки типа жонглирования
$var = "foo";
if ($var) {
echo 'I will be printed';
} else {
echo 'I will not be printed';
}
Я понимаю, что мое состояние выше автоматически делает Манипуляции так, что $var
является преобразованный в bool
.
Теперь, если я бросаю $var
к integer
, я получаю 0
:
var_dump((int)$var); // int(0)
0
это значение falsy, которая становится false
при преобразовании в bool
:
$zero = 0;
var_dump((bool)$zero); // bool(false)
Учитывая выше, почему мое состояние не печатает «Я не буду печататься»?
Это [false] (http://php.net/manual/en/language.types.boolean.php). Пустая строка, строка «0» и NULL. Если строка является числовой, она будет содержать это значение при передаче в INT, иначе она будет выбрана равной 0 или FALSE. –
Проверьте эту ссылку для сравнения типов: http://www.php.net/manual/en/types.comparisons.php –
Спасибо за ваши ребята. Я думаю, что Нить Темный Абсолют [ответ] (http://stackoverflow.com/a/34044476/1709033) объясняет это. Нет промежуточного шага преобразования в 'int', когда условие выполняет жонглирование типа: оно идет прямо из' string' в 'bool'. – henrywright