Нашел ответ, может кому-то будет полезно:
При преобразовании в boolean, следующие значения рассматриваются как
FALSE:
само значение boolean
FALSEinteger 0 (ноль)
float 0.0 (ноль)
пустая строка, и строка "0"
массив без элементов
объект без полей (только для PHP 4)
особый тип NULL (включая неустановленные переменные)
Объекты SimpleXML, созданные из пустых тегов
Все остальные значения рассматриваются как
TRUE (включая любой resource).
Внимание-1 рассматривается как
TRUE, как и любое другое ненулевое (отрицательное или положительное) число!
<?php
var_dump((bool) "");
var_dump((bool) 1);
var_dump((bool) -2);
var_dump((bool) "foo");
var_dump((bool) 2.3e5);
var_dump((bool) array(12));
var_dump((bool) array());
var_dump((bool) "false");
?>