אופרטור איחוד null
חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 31 מתוך 71.
אופרטור איחוד עם null (??) מספק דרך נוחה להשתמש בערך ברירת מחדל כאשר משתנה הוא null או אינו קיים. הדבר שימושי במיוחד כשעובדים עם נתונים שעשויים להיות חסרים.
התחביר מציב את ?? בין המשתנה שיש לבדוק לבין ערך ברירת המחדל:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP בודקת אם $username הוא null. מכיוון שכן, האופרטור מחזיר במקום זאת "אורח". אם היה ל־$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 אונליין