Menu
Coddy logo textTech

שוויון וזהות

חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 24 מתוך 71.

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) - int לעומת string
var_dump(5 === 5);     // bool(true) - אותו טיפוס ואותו ערך
var_dump(0 === false); // bool(false) - int לעומת bool
?>

להשוואות של "לא שווה", השתמשו ב־!= (לא מחמירה) או ב־!== (מחמירה):

<?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
// קראו את הקלט
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-var_dump() כדי להדפיס את התוצאה של כל השוואה בשורה חדשה:
// 1. שוויון לא מחמיר (==)
// 2. שוויון מחמיר (===)
// 3. אי-שוויון לא מחמיר (!=)
// 4. אי-שוויון מחמיר (!==)

?>
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר PHP אונליין