logo

等しさの判定

ヒューマンリソシア株式会社はコラム等しさの判定「」を公開しました。

###

みなさんこんにちは。
このコラムでは、PHP技術者認定試験(初級)の出題範囲の中から、「PHP初心者だった自分に教えたい小ネタや技術」を、全18回に渡って解説していきます。

第10回目のテーマは『等しさの判定』です。

プログラミングでは、ある式(命題)が正か否かによって処理内容を変え、様々な状況に対応しています。「女性ならこのカテゴリーの広告を表示する(命題:対象者は女性である)」「合計金額が5,000円以上なら送料無料で計算する(命題:合計金額は5,000円以上である)」といったように、様々な状況が考えられます。

PHPで正否を判定するためには if を使えますが、以下の式はそれぞれ true でしょうか、false でしょうか。

<?php

 // (1)

 $number = 0;

 if ($number) {

 echo “(1)”;

 }

 // (2)

 $number = 0;

 if ($number = ‘0’) {

 echo “(2)”;

 }

 // (3)

 $number = 0;

 if ($number == ‘0’) {

 echo “(3)”;

 }

 // (4)

 $number = 0;

 if ($number === ‘0’) {

 echo “(4)”;

 }

?>



(1)~(4)の違いは、判定式にあるイコールの数です。

この中で判定式がtrueになるのは(3)のみで、(1)(2)(4)はfalseになります。

(1)

$number(つまり0)の判定はfalseです。

(2)

これは判定式が代入式になっています。紛らわしいので普通はこんな書き方をしません(している場合、確信犯かもしれませんし、記述ミスなのかもしれません)。

この判定式ではまず、$number に ‘0’ が代入されます(この時点で、$numberの 0 が ‘0’ で上書きされます)。そのあとで、$number(’0’)の判定が行われ、false になります。

$number と ‘0’ を比較しているように見えますが、そうではありません。実際には代入演算子の右辺の ‘0’ を判定しています。そのため、もし ‘0’ ではなく ‘1’ が代入されていたら true になります。

(3)

$number と ‘0’ を比較する判定式です。比較演算子「==」では、型が異なる場合はどちらかに合わせて比較されます。数値型と文字列型を比較するときはどちらも数値として比較されるので、この式の 0 == ‘0’ は true になります。

この続きは以下をご覧ください
リンク

関連情報
http://resocia.jp/
本プレスリリースは発表元企業よりご投稿いただいた情報を掲載しております。
お問い合わせにつきましては発表元企業までお願いいたします。