表 1. PHP 比較演算子
例 名前 結果 $a が $b と等しい場合、
$a == $b は TRUE と等しくなります。
$a === $b $a が $b に等しく、それらが同じ型である場合、合同 TRUE。 (PHP 4 で導入)
$a != $b notqual $a が $b と等しくない場合は TRUE。
$a <> $b が等しくない $a が $b と等しくない場合は TRUE。
$a !== $b non-congruent $a が $b と等しくない場合、またはそれらの型が異なる場合は TRUE。 (PHP 4 のみ) $a が厳密に $b より小さい場合、
$a < $b は TRUE より小さくなります。
$a > $b は、$a が厳密に $b である場合に TRUE より大きくなります。
$a <= $b は、$a が $b 以下の場合、TRUE 以下です。
$a >= $b は、$a が $b 以上の場合、TRUE 以上です。
PHP 比較演算子が整数と文字列を比較する場合、文字列は整数に変換されます。 2 つの数値文字列を比較する場合は、整数として比較します。このルールは switch ステートメントにも適用されます。
<OL class=dp-xml><LI class=alt><SPAN><SPAN class=tag><</SPAN><SPAN> ?php </SPAN></SPAN><LI><SPAN>var_dump(</SPAN><SPAN class=attribute>0</SPAN><SPAN> == "a"); // </SPAN><SPAN class=attribute>0</SPAN><SPAN> == 0 -</SPAN><SPAN class=tag>><span> true </span></p> <li class="alt"> <span>var_dump("1" == "01"); // </span><span class="attribute">1</span><span> == 1 -</span><span class="tag">></span><span> true </span> </li> <li><span>switch ("a") { </span></li> <li class="alt"><span>case 0: </span></li> <li><span>echo "0"; </span></li> <li class="alt"><span>break; </span></li> <li><span>case "a": // never reached because "a" is already matched with 0 </span></li> <li class="alt"><span>echo "a"; </span></li> <li><span>break; </span></li> <li class="alt"><span>} </span></li> <li> <span class="tag">?></span><span> </span> </li> <p> オペランドの種類が異なる場合は、以下の表に従って比較してください(順番に)。 </p> <p><strong>表 2. PHP 比較演算子はさまざまな型を比較します</strong></p> <p>演算子 1 型オペランド 1 型結果<br>null または文字列 string 数値または字句比較のために NULL を "" に変換します<br>bool または null 他の型変換は bool、FALSE < です; TRUE <br>object オブジェクトの組み込みクラスは独自の比較を定義できます、異なるクラスは比較できません、同じクラスと配列のプロパティは同じ方法で比較されます (PHP 4)、PHP 5 には独自の命令があります </p> <p>string, resourceまたは数値 文字列、リソース、または数値 通常の数学で比較して、文字列とリソースを数値に変換します <br>array 配列 メンバーの少ない配列は小さくなります。オペランド 1 のキーがオペランド 2 に存在しない場合、配列は比較できません。それ以外の場合は比較します。値を 1 つずつ (以下の例を参照) </p> <p>array 他のタイプの配列は常に大きくなります<br>object 他のタイプのオブジェクトは常に大きくなります</p> <p><strong>例 1. 標準の配列比較コード</strong></p> <pre class="brush:php;toolbar:false"><ol class="dp-xml"><li class="alt"><span><span class="tag"><</SPAN><SPAN> ?php </SPAN></SPAN><LI><SPAN>// 数组是用标准比较运算符这样比较的 </SPAN><LI class=alt><SPAN>function standard_array_compare($op1, $op2) </SPAN><LI><SPAN>{ </SPAN><LI class=alt><SPAN>if (count($op1) </SPAN><SPAN class=tag><</SPAN><SPAN> </SPAN><SPAN class=tag-name>count</SPAN><SPAN>($op2)) { </SPAN><LI><SPAN>return -1; // $op1 </SPAN><SPAN class=tag><</SPAN><SPAN> $op2 </SPAN><LI class=alt><SPAN>} elseif (count($op1) </SPAN><SPAN class=tag>></span><span> count($op2)) { </span><li> <span>return 1; // $op1 </span><span class="tag">></span><span> $op2 </span> </li> <li class="alt"><span>} </span></li> <li> <span>foreach ($op1 as $</span><span class="attribute">key</span><span> =</span><span class="tag">></span><span> $val) { </span> </li> <li class="alt"><span>if (!array_key_exists($key, $op2)) { </span></li> <li><span>return null; // uncomparable </span></li> <li class="alt"> <span>} elseif ($val </span><span class="tag"><</SPAN><SPAN> $op2[$key]) { </SPAN><LI><SPAN>return -1; </SPAN><LI class=alt><SPAN>} elseif ($val </SPAN><SPAN class=tag>></span><span> $op2[$key]) { </span> </li> <li><span>return 1; </span></li> <li class="alt"><span>} </span></li> <li><span>} </span></li> <li class="alt"> <span>return 0; // $</span><span class="attribute">op1</span><span> == $op2 </span> </li> <li><span>} </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li></span></li></ol>
PHP 比較演算子三項演算子
もう 1 つの条件演算子は、「?:」 (または三項) 演算子です。 例 2. デフォルト値の割り当て
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</SPAN><SPAN> ?php </SPAN></SPAN><LI><SPAN>// Example usage for: Ternary Operator </SPAN><LI class=alt><SPAN>$</SPAN><SPAN class=attribute>action</SPAN><SPAN> = (empty($_POST['action'])) <br>? 'default' : $_POST['action']; </SPAN><LI><SPAN>// The above is identical to <br>this if/else statement </SPAN><LI class=alt><SPAN>if (empty($_POST['action'])) { </SPAN><LI><SPAN>$</SPAN><SPAN class=attribute>action</SPAN><SPAN> = </SPAN><SPAN class=attribute-value>'default'</SPAN><SPAN>; </SPAN><LI class=alt><SPAN>} else { </SPAN><LI><SPAN>$</SPAN><SPAN class=attribute>action</SPAN><SPAN> = $_POST['action']; </SPAN><LI class=alt><SPAN>} </SPAN><LI><SPAN class=tag>?></span><span> </span></span></li></ol>
Expression (expr1) ? (expr2) : (expr3) expr1 が TRUE と評価される場合、値は expr2 になり、expr1 が FALSE と評価される場合、値は expr3 になります。
注: 三項演算子はステートメントであるため、その評価は変数ではなくステートメントの結果であることに注意してください。これは、変数を参照によって返したい場合に重要です。参照によって返される関数内のステートメント return $var == 42 ? $a : $b; は機能せず、PHP の将来のバージョンではこれに関する警告が発行されます。