「PHP/条件分岐」の版間の差分

ナビゲーションに移動 検索に移動
厳密な等価演算子===
(if文とは何かの概略を1~2行で説明。)
(厳密な等価演算子===)
 
アカウント設定などの情報は、クッキーには含めないでおくのが、実務的にもマナー的にも望ましいだろう。アカウント設定などはサーバー側でデータベースなどで保管しておこう。セキュリティ的にも、サーバー側で保管するのが安全である。
 
 
== 厳密な等価演算子<nowiki>===</nowiki> ==
if文などで等価を判定するさいのイコール演算子は、
 
PHPでは少なくとも2種類ある。
 
 
イコール記号2個の<code>==</code>と、
 
イコール記号3個の<code>===</code>である。
 
 
イコール記号2個では、型を区別'''しない'''。
 
イコール記号3個では、型を区別する。
 
 
なお、イコール1個だけでは単なる代入命令であるので、等価演算子としては機能しない。
 
=== 厳密でないイコール2個 ===
イコール記号2個の<code>==</code>で評価した場合、
 
下記コード、
 
<syntaxhighlight lang="html5">
<?php
 
$a =1; //
 
if($a==1) {
print ("数字<br>") ;
}
 
if($a=="1") {
print ("文字列<br>") ;
}
 
?>
</syntaxhighlight>
 
を実行すると
<pre>
数字
文字列
</pre>
 
のように、両方の場合にヒットしてしまいます。
 
<code>$a =1; </code> を代わりに<code>$a ="1"; </code>と宣言しても同様に両方ヒットの結果になります。
 
このように、数値として定義したつもりの変数が文字列としても解釈されたりする仕様は、便利な場合もありますが、ときには予想外の動作を引きおこすので使いたく無い場合もあります。そこで、下記のように、イコール3個の厳密な判定を行う等価演算子が用意されています。
 
=== 厳密なイコール3個 ===
イコールの比較のさいの、型についての予想外の動作を防ぐための、より厳密な比較をできるイコール3個の演算子があります。
 
if文などでの比較の際、イコール記号3個の<code>===</code>で評価すると、数値型と文字列型とを区別して比較し、型も含めて同じ場合にだけ真になります。
 
<syntaxhighlight lang="html5">
<?php
 
$a = 1;
 
if($a === 1) {
print ("数字<br>") ;
}
 
if($a === "1") {
print ("文字列<br>") ;
}
 
?>
</syntaxhighlight>
 
;実行結果
<pre>
数字
</pre>
 
このように、イコール3個で、型を厳密に区別して、等価かどうかを評価します。
 
 
* 余談
 
余談ですが、PHPは変数に値を代入する際、じつは型の情報も保管しています。なので、上記のように厳密評価も必要に応じて行えるわけです。
 
== 参考文献 ==
23,379

回編集

案内メニュー