Що таке PHP Null Coalescing? Що і як використовується? Ми дізнаємося про це на цьому уроці.

Оператор PHP Null Coalescing був представлений у PHP 7. Оператор PHP Null Coalescing дозволяє призначати дані умовно. Якщо перший операнд існує і не є нульовим, він повертає перший операнд, інакше повертає другий операнд.

Приклади PHP Null Coalescing

// Örnek 1: 
echo $name = $_POST['name'] ?? 'nobody';
// Çıktı: nobody
// Örnek 1.1
if (isset($_POST['name'])) {
    echo $name = $_POST['name'];
} else {
    echo $name = 'nobody';
}
// Çıktı: nobody
// Örnek 1.2
echo $name = isset($_POST['name']) ? $_POST['name'] : 'nobody';
// Çıktı: nobody

У прикладі 1, оскільки не було даних публікації з назвою name, значення nobody було призначено змінній $name і воно було надруковане. Приклад 1 є скороченою версією прикладів 1.1 і 1.2 з оператором PHP Null Coalescing. Обидва повертають однаковий результат і мають однакове значення.

// Örnek 2
$first_name = 'Onur';
$last_name = null;
echo ($first_name ?? 'Ad Yok') . ' ' . ($last_name ?? 'Soyad Yok');?> 
// Çıktı: Onur Soyad Yok

У прикладі 2, оскільки змінна $first_name містить дані, вона повернула змінну в першій умові. Однак, оскільки змінна $last_name була нульовою, вона повернула другий операнд у другій умові та надрукувала речення «Без прізвища».

PHP Null Coalescing Operator Chaining

Ми можемо використовувати оператор PHP Null Coalescing, об’єднавши його в ланцюг.

// Örnek 3
echo $name = $_GET['name'] ?? $_POST['name'] ?? 'nobody';
// Çıktı: nobody
// Örnek 3.1
if (isset($_GET['name'])) {
    echo $name = $_GET['name'];
} elseif (isset($_POST['name'])) {
    echo $name = $_POST['name'];
} else {
    echo $name = 'nobody';
}
// Çıktı: nobody

У прикладі 3 PHP призначає дані $_GET['name'] змінній $name і друкує їх, якщо визначено $_GET['name']. Якщо вона не визначена, перевірте змінну $_POST'name'], якщо $_POST'name'] визначена, вона скидає та друкує, якщо ні, скидає та друкує дані «нікого». Приклад 3.1 повертає той самий результат, що й приклад 3, і має те саме значення. Приклад 3.1 є довшою версією прикладу 3, закодованою умовним оператором if-elseif-else. Приклад 3 — це коротка версія, закодована за допомогою PHP Null Coalescing.