PHP でのヌル合体とエルビス演算子
この記事では、デモンストレーションを使用して、PHP の null 合体演算子と Elvis 演算子を区別します。
PHP の Elvis オペレーター
まず、Elvis オペレーターについて教えてください。PHP Elvis 演算子は、三項演算子の省略形の演算子です。
三項演算子の修正形とも言えます。PHP Elvis 演算子を理解するには、三項演算子とその動作を理解する必要があります。
三項演算子は、単純な比較を実行したり、単純なステートメントを持つ条件をチェックしたりするために使用される条件付き演算子です。これは、if-else
ステートメントの短いバージョンです。
条件付き操作を実行するコードの長さを短縮します。操作の順序は左から右です。
構文:
condition? statement1 : statement2;
三項演算子では、最初に条件
が評価されます。条件が真の場合は statement1
が実行され、条件が偽の場合は statement2
が実行されます。
条件、true の結果ステートメント、false のステートメントの 3つのオペランドを取るため、三項演算子と呼ばれます。
サンプルコード:
<?php
$marks = 80;
$result = $marks >= 40 ? 'Pass': 'Fail';
echo $result;
?>
上記の例では、$marks >= 40
の条件が真であるため、Pass
が表示されます。
出力:
Pass
それでは、Elvis オペレーターを見てみましょう。三項演算子とは少し異なります。2 番目のオペランド(condition
と statement2
の間)を省略し、さらに短くします。
構文:
condition?:statement;
ここで、condition
が true と評価された場合、condition
を返します。それ以外の場合は、statement
を返します。
上記の Elvis 構文の 3 値表現を以下に示します。
conditon ? condition : statement;
注:PHP では、0
、false
、NULL
、""
、[]
、"0"
などの値は false 値と見なされます。
Elvis オペレーターの例をいくつか見てみましょう。
サンプルコード:
<?php
$name = "John Doe";
$yourName = $name ?: 'No name';
echo $yourName."<br>";
$marks = "";
$yourMarks = $marks ?: 'No marks';
echo $yourMarks."<br>";
$address = null;
$yourAddress = $address ?: 'No Address';
echo $yourAddress."<br>";
$age = false;
$yourAge = $age ?: 'No age';
echo $yourAge."<br>";
?>
出力:
John Doe
No marks
No Address
No age
$name
変数は true
を返すため、変数の値が評価されます。残りの場合、変数 $ mark
、$address
、および $age
は false
を返すため、右側のオペランドが評価されます。
したがって、Elvis 演算子の出力は、条件の true
または false
状態に依存すると結論付けることができます。
PHP のヌル合体演算子
null 合体演算子は、指定された変数が null であるかどうかをチェックし、値のペアから null 以外の値を返します。null 合体演算子の出力は、変数が null であるかどうかによって異なります。
それを理解するために以下の構文を見てみましょう。
statment1 ?? statement2;
ここで、statment1
が null と評価された場合、statment2
が返されます。statement1
が null 以外の値の場合、それが返されます。
null 合体演算子では、statement
の値が false
、0
、または''
のいずれであるかは関係ありません。statement
に偽の値がある場合でも、その値が返されます。
これが、Elvis 演算子と null 合体演算子の主な違いです。null 合体演算子のいくつかの例は次のとおりです。
サンプルコード:
<?php
$name = "John Doe";
$yourName = $name ?? 'No name';
echo $yourName."<br>";
$marks = "";
$yourMarks = $marks ?? 'No marks';
echo $yourMarks."<br>";
$age = false;
$yourAge = $age ?? 'No age';
echo $yourAge."<br>";
$address = null;
$yourAddress = $address ?? 'No Address';
echo $yourAddress."<br>";
?>
出力:
John Doe
No Address
ここで、変数 $name
が true の場合、評価されて出力セクションに出力されます。次に、変数 $marks
は空の文字列です。空の文字列は偽の値です。
2 番目のオペランドはヌル値ではないため、評価されません。空の文字列が評価されるため、出力セクションに空白があります。
$age
変数の場合も同じです。これは、偽の値を保持しているが null 値を保持していないためです。最後に、$address
変数の値は null です。したがって、2 番目のオペランドアドレスなし
が評価されます。
上記の例と説明から、Elvis 演算子と null 合体演算子の大きな違いは、Elvis 演算子が値が真であるかどうかをチェックすることであると結論付けることができます。それでも、null 合体演算子は値が null でないかどうかをチェックします。
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn