Вопрос по приведению из строки в логический тип.
$s = '0';
$b = (bool)$s; // $b === false
Согласно документации PHP, строка '0' приводится к FALSE при приведении к boolean. Почему строка с одном нулем переводится в FALSE? Разве не логичнее, чтобы все строки, в которых есть хоть один символ и неважно какой символ, должны быть TRUE. Например, строка 'false' при приведении к boolean превращаются в TRUE.
С чем связана данная особенность?
P.S. Я бы подумал, что приведение идет через integer:
// string > integer > boolean
'0' > 0 > false
Но не сходится, т.к.:
$s = '00';
$i = (int)$s; // $int === 0
$b = (bool)$s; // $b === true