В php, как работают логические операторы с non-booleans_? - PullRequest
0 голосов
/ 16 июля 2009

В других языках программирования (Python, Ruby, Scheme) я привык делать такие вещи, как

$foo = $cat && $dog;
$bar = $fruit || $vegetable;

Я бы ожидал, что $ foo будет назначен на $ dog, если $ cat будет нулевым, и $ bar на $ fruit, если $ fruit не будет нулевым. Кажется, я вспоминаю, как переживал подобные вещи в PHP, и я никогда не знал, как именно логические операторы обрабатывают не булевы операнды. Может кто-нибудь объяснить или указать мне правильное направление? Я попытался прочитать следующую страницу в официальных документах, но это не относится к небулевым значениям:

http://us3.php.net/manual/en/language.operators.logical.php

Ответы [ 2 ]

6 голосов
/ 16 июля 2009

В PHP результат логического сравнения всегда является логическим, операнды приводятся к логическому.

http://us3.php.net/manual/en/language.types.boolean.php

объясняет, какие значения, когда они приводятся, станут истинными или ложными.

2 голосов
/ 16 июля 2009

Будет ли это работать для вас?

$ foo = $ cat? $ cat: $ dog;

Первый $ cat превратится в логическое значение на основе известных правил. Если это правда, то $ foo будет $ cat, иначе это $ dog.

...