2008-08-05 2 views

ответ

38

Это нарушается, потому что «ложь» как строка будет вычисляться верно как логическое.

Однако это ненужное тернарное выражение, потому что результирующие значения являются простыми и ложными. Это было бы эквивалентно:

$canMerge = ($condition1 && $condition2); 
2

Значение «false» истинно. Вы должны удалить кавычки:

$canMerge = ($condition1 && $condition2) ? true : false; 
+1

Это так похоже на попытку репутации по-хозяйски. Пользователь 3k-rep, который не может различать строку и логический, кто отвечает на вопрос через минуту после того, как он это сделает? – moo 2009-01-24 03:26:35

+3

Спасибо за ваши комментарии Орландо и Эд. Это была проблема, которая застала меня, и я разместил ее для моей и другой выгоды. Ответ на ваши собственные вопросы отлично подходит для часто задаваемых вопросов. Может быть, вам стоит почитать его еще раз, если прошло какое-то время ... – Polsonby 2009-06-12 21:11:47

0

Мне кажется разумным вопрос, особенно из-за несоответствия в способе работы PHP.

Например, следующий код выведет 'его ложь'

$a = '0'; 

if($a) 
{ 
    echo 'its true'; 
} 
else 
{ 
    echo 'its false'; 
} 
-1
$canMerge = ($condition1 && $condition2); 

затем

if ($canMerge){ 
    echo "Stuff"; 
} 
Смежные вопросы