PHP Null Coalescing とは何ですか?何に、どのように使用されますか?このレッスンではこれらを学習します。

PHP Null Coalescing オペレーターは、PHP 7 で導入されました。PHP Null Coalescing オペレーターを使用すると、条件付きでデータを割り当てることができます。最初のオペランドが存在し、null でない場合は、最初のオペランドを返し、それ以外の場合は 2 番目のオペランドを返します。

PHP の Null 結合の例

// Ö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 という名前の投稿データがなかったため、$name 変数に値 none が代入されて出力されました。例 1 は、PHP Null Coalescing オペレーターを使用した例 1.1 および 1.2 の短縮版です。どちらも同じ結果を返し、同じ意味を持ちます。

// Ö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 変数が null だったので、2 番目の条件の 2 番目のオペランドが返され、「No Surname」という文が出力されました。

PHP Null 合体演算子の連鎖

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 では、$_GET['name'] が定義されている場合、PHP はデータ $_GET['name'] を $name 変数に割り当て、それを出力します。定義されていない場合は、$_POST'name'] 変数を確認します。$_POST'name'] が定義されている場合は、破棄して出力します。定義されていない場合は、「nobody」データを破棄して出力します。例 3.1 は例 3 と同じ結果を返し、同じ意味を持ちます。例 3.1 は例 3 の長いバージョンで、if-elseif-else 条件文を使用してコード化されています。例 3 は、PHP Null Coalescing でコーディングされた短いバージョンです。