بوابة OR في صفحة ويب: اختبار ||
صفحة OR هي صفحة الأسبوع العاشر مع تغيير واحد. النموذج نفسه: قائمتان منسدلتان list1 وlist2 وزر Apply. وكود PHP هو نفسه أيضًا، والجديد الاختبار داخل if فقط: $choice1 == "on" || $choice2 == "on". والعلامة || هي OR في PHP للشروط. وهي صحيحة حين يكون أحد الطرفين صحيحًا على الأقل، كما في جدول الحقيقة في الأسبوع الحادي عشر. أما | المفردة فعامل آخر: يعمل على بتات الأعداد الصحيحة، فيعطي 6 | 3 القيمة 7. وللشروط اكتب ||. ولا يطبع الكتاب كودًا لهذه الصفحة، فالدالة أدناه نسختنا الخاصة، مع فحوص الأسبوع العاشر الأكثر أمانًا. فكّر الآن في الأخطاء. إذا كتب أحدهم && في صفحة OR، أو || في صفحة AND، كان المصباح صحيحًا مع off وoff ومع on وon، لكنه خاطئ مع الاختيارين اللذين تختلف فيهما القائمتان. وهذان الصفان يدلانك على النسخة التي أمامك.
| صفحة AND | صفحة OR | |
|---|---|---|
| الاختبار | $a == "on" && $b == "on" | $a == "on" || $b == "on" |
| يضيء مع | on وon فقط | كل اختيار إلا off وoff |
| يُطفأ مع | ثلاثة اختيارات | off وoff فقط |
1function lamp(array $post): string { 2 $allowed = ["on", "off"]; 3 $first = "off"; 4 $second = "off"; 5 $state = "unlit"; 6 if (isset($post['apply'])) { 7 $first = in_array($post['list1'] ?? "", $allowed, true) ? $post['list1'] : "off"; 8 $second = in_array($post['list2'] ?? "", $allowed, true) ? $post['list2'] : "off"; 9 $state = ($first === "on" || $second === "on") ? "lit" : "unlit"; 10 } 11 return "$first $second $state"; 12} 13 14echo lamp([]), "\n"; 15echo lamp(['apply' => 'Apply', 'list1' => 'off', 'list2' => 'on']), "\n"; 16echo lamp(['apply' => 'Apply', 'list1' => 'off', 'list2' => 'off']), "\n"; 17echo lamp(['apply' => 'Apply', 'list1' => 'maybe', 'list2' => 'on']);
off off unlit off on lit off off unlit off on lit
1var_dump(true || false); 2var_dump(false || false); 3var_dump(1 | 0); 4var_dump(6 | 3);
bool(true) bool(false) int(1) int(7)
| list1 | list2 | اختبار AND | اختبار OR |
|---|---|---|---|
| off | off | مطفأ | مطفأ |
| off | on | مطفأ | مضاء |
| on | off | مطفأ | مضاء |
| on | on | مضاء | مضاء |
صفحة يُراد لها أن تكون صفحة OR لكن اختبارها $choice1 == "on" && $choice2 == "on". مع أي الاختيارات الأربعة تعرض المصباح خطأً، وماذا تعرض؟ ثم اكتب الاختبار الصحيح.