Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

عامل Null Coalescing

جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 31 من 71.

يوفر عامل دمج القيم الفارغة (??) طريقة ملائمة لاستخدام قيمة افتراضية عندما تكون قيمة المتغير 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 coalescing operator) أيضاً عندما لا يكون المتغير قد تم تعريفه على الإطلاق، دون التسبب في حدوث خطأ:

<?php
// لم يتم تعريف color$ في أي مكان
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>

هذا يجعل ?? أكثر ترتيباً من استخدام العامل الثلاثي (ternary operator) مع فحوصات isset(). إنه مثالي لتوفير قيم افتراضية منطقية عندما تكون البيانات مفقودة.

challenge icon

التحدي

سهل

اقرأ قيمتين من المدخلات: سلسلة نصية nickname وسلسلة نصية theme.

استخدم عامل دمج القيم الفارغة (null coalescing operator) للتعامل مع القيم التي قد تكون مفقودة:

  1. أنشئ متغيرًا $userNickname وقم بتعيينه إلى null. ثم استخدم عامل دمج القيم الفارغة لتعيين قيمة $displayNickname لتكون قيمة $userNickname إذا كانت موجودة وليست null، وإلا فاستخدم قيمة المدخل nickname.
  2. أنشئ متغيرًا $userTheme وقم بتعيينه لقيمة المدخل theme. استخدم عامل دمج القيم الفارغة لتعيين قيمة $selectedTheme لتكون قيمة $userTheme إذا كانت موجودة وليست null، وإلا فاستخدم dark كقيمة افتراضية.
  3. استخدم عامل دمج القيم الفارغة مباشرة مع متغير غير معرف $language (لا تقم بتعريفه) لتعيين قيمة $displayLanguage لتكون قيمة $language إذا كانت موجودة، وإلا فاستخدم English كقيمة افتراضية.

اطبع كل نتيجة في سطر جديد بهذا الترتيب: $displayNickname، $selectedTheme، $displayLanguage.

مثال:

إذا كانت المدخلات هي Player1 و light، يجب أن تكون المخرجات:

Player1
light
English

إذا كانت المدخلات هي GuestUser و blue، يجب أن تكون المخرجات:

GuestUser
blue
English

ورقة مرجعية

يوفر معامل دمج القيم الفارغة (??) قيمة افتراضية عندما يكون المتغير null أو غير موجود.

الصيغة:

$result = $variable ?? "default value";

إذا كان $variable هو null، فسيتم استخدام القيمة الافتراضية:

$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest

إذا كان لدى $variable قيمة، فسيتم استخدام تلك القيمة:

$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice

يعمل المعامل أيضًا مع المتغيرات غير المعرفة دون التسبب في خطأ:

// $color غير معرف
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue

جرّب بنفسك

<?php
// قراءة المدخلات
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: اكتب الكود الخاص بك أدناه
// 1. قم بإنشاء $userNickname واضبطه على null، ثم استخدم ?? لتعيين $displayNickname
// 2. قم بإنشاء $userTheme بمدخل السمة (theme)، ثم استخدم ?? لتعيين $selectedTheme (الافتراضي: 'dark')
// 3. استخدم ?? مع $language غير المعرف لتعيين $displayLanguage (الافتراضي: 'English')

// طباعة النتائج (كل منها في سطر جديد)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals