###
みなさんこんにちは。
このコラムでは、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 になります。
この続きは以下をご覧ください
リンク
御社のプレスリリース・イベント情報を登録するには、ZDNet Japan企業情報センターサービスへのお申し込みをいただく必要がございます。詳しくは以下のページをご覧ください。