שוויון וזהות
חלק מהיחידה יסודות במסלול ה-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) - הטיפוסים שונים
?>ככלל מומלץ, העדיפו את === ואת !== כדי להימנע מהפתעות עקב המרת טיפוסים בלתי צפויה.
אתגר
קלקרא שני ערכים מהקלט: מספר (כמחרוזת) ומספר שלם.
השתמש באופרטורים של שוויון וזהות כדי לבדוק את ההשוואות הבאות ולהדפיס את התוצאה של כל אחת מהן באמצעות var_dump(), כל אחת בשורה חדשה:
- בדוק אם ערך המחרוזת שווה למספר השלם באמצעות השוואה רופפת (
==) - בדוק אם ערך המחרוזת שווה למספר השלם באמצעות השוואה קפדנית (
===) - בדוק אם ערך המחרוזת אינו שווה למספר השלם באמצעות השוואה רופפת (
!=) - בדוק אם ערך המחרוזת אינו שווה למספר השלם באמצעות השוואה קפדנית (
!==)
הערה: השאר את הערך הראשון כמחרוזת (אל תמיר את הטיפוס שלו). המר את הערך השני למספר שלם.
דוגמה:
אם הקלט הוא 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. אי-שוויון מחמיר (!==)
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזותתרגלו בעצמכם: קומפיילר PHP אונליין