Вот пример кода:Нужен ли третичный оператор?
$boolValue = ($a == $b) ? true : false;
Когда я пытаюсь более короткий путь:
$boolValue = ($a == $b);
Его возвращение либо 1 или NULL.
Есть ли более элегантный способ возврата bool?
Вот пример кода:Нужен ли третичный оператор?
$boolValue = ($a == $b) ? true : false;
Когда я пытаюсь более короткий путь:
$boolValue = ($a == $b);
Его возвращение либо 1 или NULL.
Есть ли более элегантный способ возврата bool?
В первый, имеющий такой код:
($a == $b)
Определенно будет возвращать true
или false
. Если вы получаете 1
или NULL
, то с кодом появляется некоторая ошибка или что-то еще. Но, чтобы обойти эту ошибку, вы можете использовать использовать !!
, чтобы заставить какое-либо значение для возврата к булеву:
$boolValue = !!($a == $b);
!!
преобразует любое значение в true
или false
в зависимости от truthiness значения. Это что-то вроде преобразования типов для bool
.
Итак, как вы требование, который не может быть в случае, когда !!
добавляется перед 1
или NULL
, он будет возвращать либо true
или false
.
Это бесполезно, поскольку ($ a == $ b) уже является логическим, и даже если он не был основным [type cast using (bool)] (http://php.net/manual/en/language.types .type-juggling.php # language.types.typecasting) выполнит то же самое. –
@PaulCrovella От OP 'Его возврат 1 или NULL .'. –
И они ошибаются. –
Причина, по которой $boolValue = ($a == $b);
возвращается 1 или NULL, потому что вы проверяете его эхо, как это:
$boolValue = ($a == $b);
echo $bool_value; // outputs 1 or nothing at all (NULL)
Вы должны проверить его с var_dump()
$boolValue = ($a == $b);
var_dump($bool_value); // outputs bool(true) or bool(false)
Это называется 'ternary' и Параметр # 2 делает то же самое, что и вариант 1, но с меньшим количеством кода. Heck, сократите его еще больше '$ boolValue = $ a == $ b;' – MonkeyZeus
Любой, кто собирается спросить, зачем ему нужно 1 или нуль? С положением 1 или 0 слишком сложно работать? –
Значение по умолчанию равно null – Fil