(المعاملات المنطقية)
تُستخدم المعاملات المنطقية لربط أكثر من شرط داخل جملة شرطية if أو غيرها، وتُرجع true أو false بناءً على نتيجة الشروط.
لماذا نحتاج Logical Operators؟
لأن البرامج دائمًا تحتاج أن تسأل أسئلة مثل:
- هل المستخدم أدخل كلمة المرور الصحيحة؟
- هل العمر أكبر من 18؟
- هل المستخدم مسجل دخول AND يمتلك صلاحية؟
- هل البريد صحيح OR رقم الهاتف صحيح؟
كل هذه تعتمد على:
True / FalsePHPأي:
صح / خطأPHP✅ أهم المعاملات:
| المعامل | الاسم | المعنى |
|---|---|---|
&& | AND | كل الشروط لازم تكون صحيحة ✅ |
| ` | ` | |
! | NOT | يعكس نتيجة الشرط (إذا كان true يصبح false) |
and | AND (نفس &&) | لكن له أولوية أقل |
or | OR (نفس ` | |
xor | Exclusive OR | شرط واحد فقط يكون صحيح – لو الاثنين صح تكون False ❌ |
🔸 الفرق بين && و and, و || و or:
✅ أمثلة وشروحات:
قبل أن نبدأ — ما معنى Boolean؟
الـ Boolean هو نوع بيانات له قيمتان فقط:
true
falsePHPمثال:
<?php
var_dump(5 > 2);
?>PHPالناتج:
bool(true)PHPمثال آخر
<?php
var_dump(5 < 2);
?>PHPالناتج:
bool(false)PHP1) المعامل AND
يوجد بطريقتين:
&&
andPHPفكرة AND
يرجع:
truePHPفقط إذا كان:
كل الشروط صحيحةPHPجدول AND
| الشرط الأول | الشرط الثاني | النتيجة |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
مثال بسيط
<?php
var_dump(5 > 2 && 10 > 3);
?>PHPالتحليل
5 > 2 → true
10 > 3 → truePHPإذن:
true && truePHPالناتج:
truePHPمثال آخر
<?php
var_dump(5 > 2 && 10 < 3);
?>PHPالتحليل
5 > 2 → true
10 < 3 → falsePHPإذن:
true && falsePHPالناتج:
falsePHPمثال واقعي — تسجيل دخول
<?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";
}
// ✅ كل الشرطين لازم يتحققواPHP2) المعامل OR
يوجد بطريقتين:
||
orPHPفكرة OR
يرجع:
truePHPإذا كان:
أي شرط صحيحPHPجدول OR
| الشرط الأول | الشرط الثاني | النتيجة |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
مثال
<?php
var_dump(5 > 2 || 10 < 3);
?>PHPالتحليل
5 > 2 → true
10 < 3 → falsePHPإذن:
true || falsePHPالناتج:
truePHPلأن شرطًا واحدًا صحيح.
مثال واقعي
<?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";
}
// ✅ يكفي شرط واحد يتحققPHP3) المعامل NOT !
يعكس النتيجة.
الفكرة
| القيمة | بعد NOT |
|---|---|
| true | false |
| false | true |
مثال
<?php
var_dump(!(5 > 2));
?>PHPالتحليل
5 > 2 → truePHPثم:
!true → falsePHPمثال عملي
<?php
$isLoggedIn = false;
if (!$isLoggedIn) {
echo "يجب تسجيل الدخول";
}
?>PHPالمعنى
إذا لم يكن مسجل دخولPHP$loggedIn = false;
if (! $loggedIn) {
echo "Please login first";
}
// ✅ يعكس القيمة: !false = truePHP4) المعامل XOR
أقل استخدامًا لكنه مهم.
الفكرة
يرجع:
truePHPإذا:
شرط واحد فقط صحيحPHPجدول XOR
| الأول | الثاني | النتيجة |
|---|---|---|
| true | true | false |
| true | false | true |
| false | true | true |
| false | false | false |
مثال
<?php
var_dump(true xor false);
?>PHPالناتج:
truePHPمثال آخر
<?php
var_dump(true xor true);
?>PHPالناتج:
falsePHP$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🧪 تمارين تدريبية:
- اكتب شرط يتحقق إذا كان المستخدم بالغ (
age >= 18) ومسجل (isRegistered == true). - تحقق إذا كان المستخدم admin أو moderator لعرض لوحة التحكم.
- اكتب شرط يعرض رسالة “تسجيل الدخول” إذا لم يكن المستخدم مسجلاً (
!loggedIn). - جرّب
xorمع متغيرين أحدهما true والآخر false. - اختبر
&&و||داخلifلتكوين شرط معقّد فيه 3 شروط.
✅ ملخص سريع:
| المعامل | الوصف | النتيجة المطلوبة |
|---|---|---|
&& | كل الشروط يجب أن تكون true | true |
| ` | ` | |
! | يعكس القيمة | true ↔ false |
xor | شرط واحد فقط يكون true | true |
💡 نصائح عامة:
- استخدم
&&و||بدلاً منandوorلأنها أكثر وضوحًا وأمانًا في التنفيذ. - اختبر الشروط المعقدة داخل
ifباستخدامvar_dump()للتأكد من النتائج. - استخدم
!بطريقة معتدلة حتى لا تجعل الشروط صعبة الفهم.
الفرق بين && و ||
AND &&
كل الشروط يجب أن تكون صحيحة.
OR ||
يكفي شرط واحد صحيح.
مثال يوضح الفرق
AND
<?php
var_dump(10 > 5 && 3 > 1);
?>PHPالناتج:
truePHPOR
<?php
var_dump(10 > 5 || 3 < 1);
?>PHPالناتج:
truePHPدمج عدة شروط
<?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 "تم تسجيل الدخول";
}
?>
أولوية العمليات المنطقية
الترتيب مهم جدًا.
الأولوية
!&&||
مثال
<?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 | شرط واحد فقط صحيح |
أهم نصيحة للمبتدئين
عند رؤية شرط طويل:
- قسمه لأجزاء صغيرة
- حل كل جزء وحده
- حوّل كل جزء إلى:
- true
- false
- بعدها طبّق الـ Logical Operator