Avatar ·

الفرق بين == و === في PHP

الفرق بين == و === في PHP: سلوك غريب عند مقارنة سلسلة نصية ورقم

مرحبًا بالجميع! أنا مبتدئ في PHP وقد واجهت سلوكًا غير متوقع لعوامل المقارنة. أحاول فهم الفرق بين == (المساواة غير الصارمة) و === (المساواة الصارمة).

لدي كود بسيط:

$a = '123abc';
$b = 123;

var_dump($a == $b);  // النتيجة: true
var_dump($a === $b); // النتيجة: false

كنت أتوقع أن كلا المقارنتين سترجعان false، لأن الأنواع مختلفة (سلسلة نصية ورقم). لكن == يرجع true. لماذا يحدث هذا؟ قرأت أن == يقوم بتحويل الأنواع، لكنني لا أفهم كيف يمكن للسلسلة النصية '123abc' أن تساوي الرقم 123.

ما جربته بالفعل:

  • فحصت مع سلاسل نصية مختلفة (مثل 'abc123' — حيث أعاد == false)
  • قرأت وثائق PHP حول عوامل المقارنة
  • جربت مع أنواع أخرى (قيم منطقية، null)

هل يمكنكم التوضيح بمثال مفهوم عن متى يجب استخدام == ومتى يجب استخدام ===؟ ولماذا في حالتي حدث ذلك؟