Logical Operators In PHP

(المعاملات المنطقية)

تُستخدم المعاملات المنطقية لربط أكثر من شرط داخل جملة شرطية if أو غيرها، وتُرجع true أو false بناءً على نتيجة الشروط.

لماذا نحتاج Logical Operators؟

لأن البرامج دائمًا تحتاج أن تسأل أسئلة مثل:

  • هل المستخدم أدخل كلمة المرور الصحيحة؟
  • هل العمر أكبر من 18؟
  • هل المستخدم مسجل دخول AND يمتلك صلاحية؟
  • هل البريد صحيح OR رقم الهاتف صحيح؟

كل هذه تعتمد على:

True / False
PHP

أي:

صح / خطأ
PHP
✅ أهم المعاملات:
المعاملالاسمالمعنى
&&ANDكل الشروط لازم تكون صحيحة ✅
``
!NOTيعكس نتيجة الشرط (إذا كان true يصبح false)
andAND (نفس &&)لكن له أولوية أقل
orOR (نفس `
xorExclusive ORشرط واحد فقط يكون صحيح – لو الاثنين صح تكون False ❌
🔸 الفرق بين && و and, و || و or:
✅ أمثلة وشروحات:
قبل أن نبدأ — ما معنى Boolean؟

الـ Boolean هو نوع بيانات له قيمتان فقط:

true
false
PHP

مثال:

<?php

  var_dump(5 > 2);

?>
PHP

الناتج:

bool(true)
PHP
مثال آخر
<?php

  var_dump(5 < 2);

?>
PHP

الناتج:

bool(false)
PHP
1) المعامل AND

يوجد بطريقتين:

&&
and
PHP
فكرة AND

يرجع:

true
PHP

فقط إذا كان:

كل الشروط صحيحة
PHP
جدول AND
الشرط الأولالشرط الثانيالنتيجة
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse
مثال بسيط
<?php

  var_dump(5 > 2 && 10 > 3);
  
?>
PHP
التحليل
5 > 2   → true
10 > 3  → true
PHP

إذن:

true && true
PHP

الناتج:

true
PHP
مثال آخر
<?php

  var_dump(5 > 2 && 10 < 3);

?>
PHP
التحليل
5 > 2   → true
10 < 3  → false
PHP

إذن:

true && false
PHP

الناتج:

false
PHP
مثال واقعي — تسجيل دخول
<?php

  $username = "admin";
  $password = "1234";
  
  if ($username == "admin" && $password == "1234") {
     echo "تم تسجيل الدخول";
  }
?>
PHP
لماذا استخدمنا AND؟

لأننا نريد:

اسم المستخدم صحيح
و
كلمة المرور صحيحة
PHP

إذا فشل واحد فقط → الدخول يفشل.

📌 1. && (AND)
$age = 20;
$country = "Egypt";

if ($age >= 18 && $country == "Egypt") {
    echo "Allowed";
} else {
    echo "Not allowed";
}
// ✅ كل الشرطين لازم يتحققوا
PHP
2) المعامل OR

يوجد بطريقتين:

||
or
PHP
فكرة OR

يرجع:

true
PHP

إذا كان:

أي شرط صحيح
PHP
جدول OR
الشرط الأولالشرط الثانيالنتيجة
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse
مثال
<?php

  var_dump(5 > 2 || 10 < 3);

?>
PHP
التحليل
5 > 2   → true
10 < 3  → false
PHP

إذن:

true || false
PHP

الناتج:

true
PHP

لأن شرطًا واحدًا صحيح.

مثال واقعي
<?php

$isLoggedIn = true;
$isAdmin = false;

if ($isLoggedIn || $isAdmin) {
    echo "يمكنك الدخول";
}

?>
PHP
المعنى

يكفي:

  • المستخدم مسجل دخول
    أو
  • أدمن
📌 2. || (OR)
$userType = "admin";
$status = "active";

if ($userType == "admin" || $status == "active") {
    echo "Access granted";
} else {
    echo "Access denied";
}
// ✅ يكفي شرط واحد يتحقق
PHP
3) المعامل NOT !

يعكس النتيجة.

الفكرة
القيمةبعد NOT
truefalse
falsetrue
مثال
<?php

  var_dump(!(5 > 2));

?>
PHP
التحليل
5 > 2 → true
PHP

ثم:

!true → false
PHP
مثال عملي
<?php

$isLoggedIn = false;

if (!$isLoggedIn) {
    echo "يجب تسجيل الدخول";
}

?>
PHP
المعنى
إذا لم يكن مسجل دخول
PHP
$loggedIn = false;

if (! $loggedIn) {
    echo "Please login first";
}
// ✅ يعكس القيمة: !false = true
PHP
4) المعامل XOR

أقل استخدامًا لكنه مهم.

الفكرة

يرجع:

true
PHP

إذا:

شرط واحد فقط صحيح
PHP
جدول XOR
الأولالثانيالنتيجة
truetruefalse
truefalsetrue
falsetruetrue
falsefalsefalse

مثال

<?php

  var_dump(true xor false);

?>
PHP

الناتج:

true
PHP
مثال آخر
<?php

  var_dump(true xor true);

?>
PHP

الناتج:

false
PHP
$hasCoupon = true;
$isVIP = true;

if ($hasCoupon xor $isVIP) {
    echo "خصم متاح";
} else {
    echo "لا خصم";
}
// ❌ لأن الاثنين true → لا يعمل الخصم
PHP
💬 استخدامات شائعة:
الحالةالاستخدام
التحقق من أكثر من شرطif ($age > 18 && $country == "Egypt")
التأكد من وجود أحد الشروط فقط`if ($loggedIn
عكس شرطif (!empty($name))
شروط الخصم أو الإذن بالدخولif ($hasPermission && $isVerified)
⚠️ محاذير:
التحذيرالتوضيح
لا تخلط بين and و && داخل إسنادلأن and لها أولوية أقل، وقد تعطي نتائج غير متوقعة
❗ مثال خاطئ:
$result = false || true;  // ✅ يعطينا true
var_dump($result); // true

$result = false or true;  // ❌ يعطينا false
var_dump($result); // false لأن `=` له أولوية أعلى من `or`
PHP
🧪 تمارين تدريبية:
  1. اكتب شرط يتحقق إذا كان المستخدم بالغ (age >= 18) ومسجل (isRegistered == true).
  2. تحقق إذا كان المستخدم admin أو moderator لعرض لوحة التحكم.
  3. اكتب شرط يعرض رسالة “تسجيل الدخول” إذا لم يكن المستخدم مسجلاً (!loggedIn).
  4. جرّب xor مع متغيرين أحدهما true والآخر false.
  5. اختبر && و || داخل if لتكوين شرط معقّد فيه 3 شروط.
✅ ملخص سريع:
المعاملالوصفالنتيجة المطلوبة
&&كل الشروط يجب أن تكون truetrue
``
!يعكس القيمةtrue ↔ false
xorشرط واحد فقط يكون truetrue
💡 نصائح عامة:
  • استخدم && و || بدلاً من and و or لأنها أكثر وضوحًا وأمانًا في التنفيذ.
  • اختبر الشروط المعقدة داخل if باستخدام var_dump() للتأكد من النتائج.
  • استخدم ! بطريقة معتدلة حتى لا تجعل الشروط صعبة الفهم.
الفرق بين && و ||
AND &&

كل الشروط يجب أن تكون صحيحة.

OR ||

يكفي شرط واحد صحيح.

مثال يوضح الفرق
AND
<?php

  var_dump(10 > 5 && 3 > 1);

?>
PHP

الناتج:

true
PHP
OR
<?php

  var_dump(10 > 5 || 3 < 1);

?>
PHP

الناتج:

true
PHP
دمج عدة شروط
<?php

  $age = 25;
  $hasLicense = true;
  if ($age >= 18 && $hasLicense) {
      echo "يمكنك القيادة";
  }
?>
PHP
مثال أكبر
<?php

$username = "admin";
$password = "1234";
$isBlocked = false;

if ($username == "admin" && $password == "1234" && !$isBlocked) {
echo "تم تسجيل الدخول";
}

?>

أولوية العمليات المنطقية

الترتيب مهم جدًا.


الأولوية

  1. !
  2. &&
  3. ||

مثال

<?php

var_dump(true || false && false);

?>

التحليل

أولًا:

false && false

الناتج:

false

ثم:

true || false

الناتج:

true

استخدم الأقواس دائمًا

<?php

var_dump((true || false) && false);

?>

التحليل

(true || false)
↓
true

ثم:

true && false

الناتج:

false

الفرق بين && و and

وهذه نقطة مهمة جدًا للمبتدئين.


كلاهما يعني AND

لكن:

الأولوية مختلفة

مثال خطير

<?php

$result = true && false;

var_dump($result);

?>

الناتج:

false

لكن

<?php

$result = true and false;

var_dump($result);

?>

الناتج:

true

لماذا؟ 😨

لأن:

=

له أولوية أعلى من:

and

فتصبح:

($result = true) and false

إذن:

$result = true

لذلك في المشاريع الحقيقية

يفضل دائمًا استخدام:

&&
||

بدل:

and
or

أخطاء شائعة جدًا


1) نسيان الأقواس

خطأ:

if ($a > 5 || $b < 10 && $c == 1)

أفضل:

if (($a > 5 || $b < 10) && $c == 1)

2) استخدام = بدل ==

خطأ:

if ($x = 5)

الصحيح:

if ($x == 5)

3) الخلط بين AND و OR


AND

كل شيء يجب أن يكون صحيحًا.


OR

يكفي شيء واحد.


تطبيق شامل جدًا

<?php

$username = "admin";
$password = "1234";
$age = 25;
$isBlocked = false;

if (
$username == "admin"
&& $password == "1234"
&& $age >= 18
&& !$isBlocked
) {
echo "تم السماح بالدخول";
} else {
echo "تم رفض الدخول";
}

?>

شرح الشرط

يجب أن يكون:

  • اسم المستخدم صحيح
  • وكلمة المرور صحيحة
  • والعمر 18 أو أكثر
  • والحساب غير محظور

إذا فشل شرط واحد → رفض الدخول.


ملخص سريع

المعاملالمعنى
&&AND → كل الشروط صحيحة
`
!NOT → عكس القيمة
xorشرط واحد فقط صحيح

أهم نصيحة للمبتدئين

عند رؤية شرط طويل:

  1. قسمه لأجزاء صغيرة
  2. حل كل جزء وحده
  3. حوّل كل جزء إلى:
    • true
    • false
  4. بعدها طبّق الـ Logical Operator