こんにちは、システム事業部のfujiです!

今回も前回に引き続き、PHPの比較演算子についての記事です。

今回は、前回でも少し触れた緩やかな比較と厳密な比較の違いについてです。

 

簡単に、前回の振り返りをします。

比較演算子==は緩やかな比較で、===は厳密な比較をします。

例えば、TRUE と1を比較したときに、==では真、===では偽になります。

では、緩やかな比較と厳密な比較の違いについて、具体的な例を表で見てみましょう。

 
<table style=”border: 2px solid #808080; height: 437px;” width=”819″><caption><strong><em>==</em> による緩やかな比較</strong></caption>
<thead>
<tr>
<th></th>
<th><strong><code>TRUE</code></strong></th>
<th><strong><code>FALSE</code></strong></th>
<th><em>1</em></th>
<th><em>0</em></th>
<th><em>-1</em></th>
<th><em>”1″</em></th>
<th><em>”0″</em></th>
<th><em>”-1″</em></th>
<th><strong><code>NULL</code></strong></th>
<th><em>array()</em></th>
<th><em>”php”</em></th>
<th><em>””</em></th>
</tr>
</thead>
<tbody class=”tbody”>
<tr>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
</tr>
<tr>
<td><em>1</em></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>0</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
</tr>
<tr>
<td><em>-1</em></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”1″</em></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”0″</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”-1″</em></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><strong><code>NULL</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
</tr>
<tr>
<td><em>array()</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”php”</em></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>””</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
</tr>
</tbody>
</table>
&nbsp;

&nbsp;
<table style=”border: 2px solid #808080; height: 437px;” width=”819″><caption><strong><em>===</em> による厳密な比較</strong></caption>
<thead>
<tr>
<th></th>
<th><strong><code>TRUE</code></strong></th>
<th><strong><code>FALSE</code></strong></th>
<th><em>1</em></th>
<th><em>0</em></th>
<th><em>-1</em></th>
<th><em>”1″</em></th>
<th><em>”0″</em></th>
<th><em>”-1″</em></th>
<th><strong><code>NULL</code></strong></th>
<th><em>array()</em></th>
<th><em>”php”</em></th>
<th><em>””</em></th>
</tr>
</thead>
<tbody class=”tbody”>
<tr>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>1</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>0</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>-1</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”1″</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”0″</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”-1″</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><strong><code>NULL</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>array()</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>”php”</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
</tr>
<tr>
<td><em>””</em></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>FALSE</code></strong></td>
<td><strong><code>TRUE</code></strong></td>
</tr>
</tbody>
</table>
&nbsp;

いかがでしょうか。

緩やかな比較だと、TRUE == -1やTRUE == “php”でも真になってしまうので、注意したいですね。

逆に厳密な比較は、本当に同じものしか真になっていません。

&nbsp;

phpで条件文を記述する際など、自分の思った結果になっていないときは、思い出してみるといいかもしれません。

&nbsp;