Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المساواة والتطابق

جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 24 من 71.

توفر PHP طريقتين للتحقق مما إذا كانت القيم متساوية: معامل المساواة (==) و معامل التطابق (===). فهم الفرق أمر بالغ الأهمية لكتابة كود موثوق.

عامل التساوي (==) يقارن القيم بعد تحويلها إلى نفس النوع. يُسمى هذا بـ "المقارنة غير الصارمة" (loose comparison):

<?php
var_dump(5 == "5");    // bool(true) - تم تحويل السلسلة النصية إلى رقم
var_dump(0 == false);  // bool(true) - كلاهما يصبح 0
var_dump(1 == true);   // bool(true) - كلاهما يصبح 1
?>

يقارن عامل التطابق (===) كلاً من القيمة والنوع. لا يحدث أي تحويل، لذا يجب أن يتطابق كلاهما تماماً:

<?php
var_dump(5 === "5");   // bool(false) - عدد صحيح مقابل سلسلة نصية
var_dump(5 === 5);     // bool(true) - نفس النوع والقيمة
var_dump(0 === false); // bool(false) - عدد صحيح مقابل قيمة منطقية
?>

للمقارنات "غير المتساوية"، استخدم != (غير صارمة) أو !== (صارمة):

<?php
var_dump(5 != "5");    // bool(false) - القيم متساوية
var_dump(5 !== "5");   // bool(true) - الأنواع تختلف
?>

كأفضل ممارسة، فضل استخدام === و !== لتجنب مفاجآت تحويل الأنواع غير المتوقعة.

challenge icon

التحدي

سهل

اقرأ قيمتين من المدخلات: رقم (كسلسلة نصية) وعدد صحيح.

استخدم عاملي المساواة والتطابق لتقييم المقارنات التالية واطبع نتيجة كل منها باستخدام var_dump()، كل واحدة في سطر جديد:

  1. تحقق مما إذا كانت قيمة السلسلة النصية تساوي العدد الصحيح باستخدام المقارنة غير الصارمة (==)
  2. تحقق مما إذا كانت قيمة السلسلة النصية تساوي العدد الصحيح باستخدام المقارنة الصارمة (===)
  3. تحقق مما إذا كانت قيمة السلسلة النصية لا تساوي العدد الصحيح باستخدام المقارنة غير الصارمة (!=)
  4. تحقق مما إذا كانت قيمة السلسلة النصية لا تساوي العدد الصحيح باستخدام المقارنة الصارمة (!==)

ملاحظة: احتفظ بالقيمة الأولى كسلسلة نصية (لا تقم بتحويل نوعها). قم بتحويل القيمة الثانية إلى عدد صحيح.

مثال:

إذا كانت المدخلات هي 42 و 42، يجب أن تكون المخرجات:

bool(true)
bool(false)
bool(false)
bool(true)

الشرح:

  • "42" == 42 هو true (القيم متساوية بعد تحويل النوع)
  • "42" === 42 هو false (سلسلة نصية مقابل عدد صحيح - أنواع مختلفة)
  • "42" != 42 هو false (القيم متساوية)
  • "42" !== 42 هو true (الأنواع مختلفة)

ورقة مرجعية

لدى PHP طريقتان لمقارنة القيم:

عامل المساواة (==) - مقارنة مرنة تقوم بتحويل القيم إلى نفس النوع قبل المقارنة:

<?php
var_dump(5 == "5");    // bool(true) - تم تحويل السلسلة النصية إلى رقم
var_dump(0 == false);  // bool(true) - كلاهما يصبح 0
var_dump(1 == true);   // bool(true) - كلاهما يصبح 1
?>

عامل التطابق (===) - مقارنة صارمة تتحقق من القيمة والنوع معاً:

<?php
var_dump(5 === "5");   // bool(false) - عدد صحيح مقابل سلسلة نصية
var_dump(5 === 5);     // bool(true) - نفس النوع والقيمة
var_dump(0 === false); // bool(false) - عدد صحيح مقابل قيمة منطقية
?>

عوامل عدم المساواة:

<?php
var_dump(5 != "5");    // bool(false) - القيم متساوية (مقارنة مرنة)
var_dump(5 !== "5");   // bool(true) - الأنواع مختلفة (مقارنة صارمة)
?>

أفضل ممارسة: استخدم === و !== لتجنب تحويل الأنواع غير المتوقع.

جرّب بنفسك

<?php
// قراءة المدخلات
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: اكتب كودك أدناه
// استخدم var_dump() لطباعة نتيجة كل مقارنة في سطر جديد:
// 1. المساواة غير الصارمة (==)
// 2. المساواة الصارمة (===)
// 3. عدم المساواة غير الصارمة (!=)
// 4. عدم المساواة الصارمة (!==)

?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals