我想設置一個標誌來顯示或隱藏一個頁面元素,但即使表達式爲false,它也會始終顯示。爲什麼我的三元表達式不起作用?
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
這是怎麼回事?
我想設置一個標誌來顯示或隱藏一個頁面元素,但即使表達式爲false,它也會始終顯示。爲什麼我的三元表達式不起作用?
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
這是怎麼回事?
這被打破,因爲作爲字符串的'false'將作爲布爾值計算爲true。
但是,這是一個不需要的三元表達式,因爲結果值是簡單的真和假。這將是等效的:
$canMerge = ($condition1 && $condition2);
'false'的值爲真。您需要刪除引號:
$canMerge = ($condition1 && $condition2) ? true : false;
對我來說似乎是一個合理的問題,尤其是因爲PHP的工作方式的差異。
例如,下面的代碼將輸出 '的假'
$a = '0';
if($a)
{
echo 'its true';
}
else
{
echo 'its false';
}
$canMerge = ($condition1 && $condition2);
然後
if ($canMerge){
echo "Stuff";
}
這所以似乎是一個信譽耕作的嘗試。一個3k-rep用戶誰不能區分一個字符串和一個布爾值,他在一分鐘後回答他的問題? – moo 2009-01-24 03:26:35
感謝您的意見奧蘭多和埃德。這是一個引起我注意的問題,我將它發佈給我和其他人的好處。根據常見問題回答自己的問題是完美的。也許你應該再讀一遍,如果它已經有一段時間了...... – Polsonby 2009-06-12 21:11:47