لماذا لا يعمل تعبيري الثلاثي؟
-
08-06-2019 - |
سؤال
أحاول تعيين علامة لإظهار عنصر الصفحة أو إخفائه، ولكنها تظهر دائمًا حتى عندما يكون التعبير خاطئًا.
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
ما أخبارك؟
المحلول
تم كسر هذا لأن القيمة "خطأ" كسلسلة سيتم تقييمها على أنها صحيحة كقيمة منطقية.
ومع ذلك، هذا تعبير ثلاثي غير ضروري، لأن القيم الناتجة هي صحيحة وخاطئة بسيطة.وهذا سيكون معادلاً:
$canMerge = ($condition1 && $condition2);
نصائح أخرى
قيمة "خطأ" صحيحة.تحتاج إلى إزالة علامات الاقتباس:
$canMerge = ($condition1 && $condition2) ? true : false;
يبدو لي سؤالًا معقولًا خاصة بسبب التناقض في طريقة عمل PHP.
على سبيل المثال، سيُخرج التعليمة البرمجية التالية "الخطأ"
$a = '0';
if($a)
{
echo 'its true';
}
else
{
echo 'its false';
}
$canMerge = ($condition1 && $condition2);
ثم
if ($canMerge){
echo "Stuff";
}
لا تنتمي إلى StackOverflow