Co je PHP Null Coalescing? Co a jak se používá? To se naučíme v této lekci.

Operátor PHP Null Coalescing byl zaveden v PHP 7. Operátor PHP Null Coalescing umožňuje podmíněné přiřazování dat. Pokud první operand existuje a není null, vrátí první operand, jinak vrátí druhý operand.

Příklady 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

V příkladu 1, protože neexistovala žádná data příspěvku s názvem name, byla proměnné $name přiřazena hodnota nikdo a byla vytištěna. Příklad 1 je zkrácená verze příkladů 1.1 a 1.2 s operátorem PHP Null Coalescing. Oba vrátí stejný výsledek a mají stejný význam.

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

V příkladu 2, protože proměnná $first_name má data, vrátila proměnnou v první podmínce. Protože však proměnná $last_name byla null, vrátila druhý operand ve druhé podmínce a vypsala větu 'Bez příjmení'.

PHP Null Coalescing Operator Chaining

Operátor PHP Null Coalescing můžeme použít jeho zřetězením.

// Ö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

V příkladu 3 PHP přiřadí data $_GET['name'] do proměnné $name a vytiskne je, pokud je definován $_GET['name']. Pokud není definována, zkontrolujte proměnnou $_POST'name'], pokud je definována $_POST'name'], zahodí a vytiskne, pokud ne, zahodí a vytiskne data 'nikdo'. Příklad 3.1 vrátí stejný výsledek jako příklad 3 a má stejný význam. Příklad 3.1 je delší verze příkladu 3 kódovaná podmíněným příkazem if-elseif-else. Příklad 3 je krátká verze kódovaná pomocí PHP Null Coalescing.