אופרטור איחוד null
חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 31 מתוך 71.
האופרטור למיזוג ערכי null (??) מספק דרך נוחה להשתמש בערך ברירת מחדל כאשר משתנה הוא null או לא קיים. הדבר שימושי במיוחד כשעובדים עם נתונים שעשויים להיות חסרים.
התחביר מציב את ?? בין המשתנה שיש לבדוק לבין ערך ברירת המחדל:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP בודקת אם $username הוא null. מכיוון שכן, האופרטור מחזיר במקום זאת את "Guest". אם היה ערך ל־$username, הערך הזה היה בשימוש.
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>אופרטור איחוד ה־null פועל גם כאשר משתנה כלל לא הוגדר, בלי לגרום לשגיאה:
<?php
// $color אינו מוגדר בשום מקום
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>כך ?? נקי יותר משימוש באופרטור תנאי עם בדיקות isset(). הוא מושלם להגדרת ערכי ברירת מחדל הגיוניים כשייתכן שחסרים נתונים.
אתגר
קלקראו שני ערכים מהקלט: מחרוזת nickname ומחרוזת theme.
השתמשו באופרטור איחוד עם null כדי לטפל בערכים שעשויים להיות חסרים:
- צרו משתנה
$userNicknameוהגדירו אותו ל־null. לאחר מכן השתמשו באופרטור איחוד עם null כדי להקצות ל־$displayNicknameאת הערך של$userNicknameאם הוא קיים ואינו null; אחרת, השתמשו בערך הקלטnickname. - צרו משתנה
$userThemeוהקצו לו את ערך הקלטtheme. השתמשו באופרטור איחוד עם null כדי להקצות ל־$selectedThemeאת הערך של$userThemeאם הוא קיים ואינו null; אחרת, השתמשו ב־darkכברירת מחדל. - השתמשו באופרטור איחוד עם null ישירות עם משתנה לא מוגדר
$language(אל תגדירו אותו) כדי להקצות ל־$displayLanguageאת הערך של$languageאם הוא קיים; אחרת, השתמשו ב־Englishכברירת מחדל.
הדפיסו כל תוצאה בשורה חדשה, לפי הסדר הזה: $displayNickname, $selectedTheme, $displayLanguage.
דוגמה:
אם הקלט הוא Player1 ו־light, הפלט צריך להיות:
Player1
light
Englishאם הקלט הוא GuestUser ו־blue, הפלט צריך להיות:
GuestUser
blue
Englishנסו בעצמכם
<?php
// קראו את הקלט
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO: כתבו את הקוד שלכם למטה
// 1. צרו את $userNickname והגדירו אותו ל-null, ואז השתמשו ב-?? כדי להקצות ערך ל-$displayNickname
// 2. צרו את $userTheme עם קלט ערכת הנושא, ואז השתמשו ב-?? כדי להקצות ערך ל-$selectedTheme (ברירת מחדל: הטקסט המדויק מההוראות)
// 3. השתמשו ב-?? עם $language שלא הוגדר כדי להקצות ערך ל-$displayLanguage (ברירת מחדל: הטקסט המדויק מההוראות)
// הציגו את התוצאות (כל אחת בשורה חדשה)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזותתרגלו בעצמכם: קומפיילר PHP אונליין