Menu
Coddy logo textTech

אופרטור איחוד 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(). הוא מושלם להגדרת ערכי ברירת מחדל הגיוניים כשייתכן שחסרים נתונים.

challenge icon

אתגר

קל

קראו שני ערכים מהקלט: מחרוזת nickname ומחרוזת theme.

השתמשו באופרטור איחוד עם null כדי לטפל בערכים שעשויים להיות חסרים:

  1. צרו משתנה $userNickname והגדירו אותו ל־null. לאחר מכן השתמשו באופרטור איחוד עם null כדי להקצות ל־$displayNickname את הערך של $userNickname אם הוא קיים ואינו null; אחרת, השתמשו בערך הקלט nickname.
  2. צרו משתנה $userTheme והקצו לו את ערך הקלט theme. השתמשו באופרטור איחוד עם null כדי להקצות ל־$selectedTheme את הערך של $userTheme אם הוא קיים ואינו null; אחרת, השתמשו ב־dark כברירת מחדל.
  3. השתמשו באופרטור איחוד עם 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";
?>
quiz iconבחנו את עצמכם

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

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

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