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

عامل Null Coalescing

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

يوفر عامِل دمج قيم null (??) طريقة مريحة لاستخدام قيمة افتراضية عندما تكون القيمة null أو غير موجودة. هذا مفيد بشكل خاص عند التعامل مع البيانات التي قد تكون مفقودة.

يضع التمرير ?? بين المتغير المراد التحقق منه والقيمة البديلة (fallback):

<?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; // أزرق
?>

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

challenge icon

التحدي

سهل

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

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

  1. أنشئ متغيراً $userNickname مع ضبطه على null. ثم استخدم معامل الدمج مع القيمة الخالية لتعيين قيمته لـ $displayNickname إذا كان موجوداً وغير خالي، وإلا استخدم قيمة الإدخال nickname.
  2. أنشئ متغيراً $userTheme وعيّن له قيمة الإدخال theme. استخدم معامل الدمج مع القيمة الخالية لتعيين قيمة $userTheme لـ $selectedTheme إذا كان موجوداً وغير خالي، وإلا استخدم dark كقيمة افتراضية.
  3. استخدم معامل الدمج مع القيمة الخالية مباشرة مع متغير غير معرّف $language (لا تقم بتعريفه) لتعيين قيمة $language لـ $displayLanguage إذا كان موجوداً، وإلا استخدم 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اختبر نفسك

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

جميع دروس Fundamentals

تدرّب بنفسك: مترجم PHP عبر الإنترنت