※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。 また、編集部はこの内容について正確性を保証できません。
ヒューマンリソシア株式会社はコラム「大小の判定」を公開しました。 みなさんこんにちは。 このコラムでは、PHP技術者認定試験(初級)の出題範囲の中から、「PHP初心者だった自分に教えたい小ネタや技術」を、全18回に渡って解説していきます。 第11回目のテーマは『大小の判定』です。 大小の判定とは、二者のうちどちらが大きいかという判断ですが、これを利用すると複数の値の順序を並び替える(ソートする)ことができます。 意外なソート結果 例えば写真ファイルをファイル名の昇順で並び替えると、次のようになります。想定通りですよね。 1. 旅行の写真_1.jpg 2. 旅行の写真_2.jpg 3. 旅行の写真_3.jpg 4. 旅行の写真_4.jpg 5. 旅行の写真_5.jpg ところがファイルを増やすと次のように並びます。「10が2より小さいってどういうこと?」と思いますよね。 1. 旅行の写真_1.jpg 2. 旅行の写真_10.jpg 3. 旅行の写真_2.jpg 4. 旅行の写真_3.jpg 5. 旅行の写真_4.jpg 6. 旅行の写真_5.jpg 7. 旅行の写真_6.jpg 8. 旅行の写真_7.jpg 9. 旅行の写真_8.jpg 10. 旅行の写真_9.jpg 上記の例では、「旅行の写真_10.jpg」と「旅行の写真_2.jpg」を、文字列として比較しています。文字列として比較というのは、先頭から1文字ずつ比較するということです。 HRphp_11 前半の「旅行の写真_」まで比較した時点では、両者に差はありません。続いて次の「1」と「2」を比較すると「1」の方が「2」より小さいため、「旅行の写真_10.jpg」の方が小さいと判断されます。 よって、さらにたくさんのファイルがあると、次のような並び替えになります。 1. 旅行の写真_1.jpg 2. 旅行の写真_10.jpg 3. 旅行の写真_100.jpg 4. 旅行の写真_11.jpg 5. 旅行の写真_12.jpg 6. 旅行の写真_13.jpg 7. : 8. 旅行の写真_19.jpg 9. 旅行の写真_2.jpg 10. 旅行の写真_20.jpg 11. 旅行の写真_21.jpg 12. : ただし、数値が連続している部分は文字列ではなく数値として比較してくれる賢いソフトウェアやアプリもあります。その場合は、以下のように並びます。 1. 旅行の写真_1.jpg 2. 旅行の写真_2.jpg 3. 旅行の写真_3.jpg 4. 旅行の写真_4.jpg 5. 旅行の写真_5.jpg 6. 旅行の写真_6.jpg 7. 旅行の写真_7.jpg 8. 旅行の写真_8.jpg 9. 旅行の写真_9.jpg 10. 旅行の写真_10.jpg 型による大小比較結果の違い PHPを使うときは、数値として比較するのか、文字列として比較するのかを意識することが重要です。ファイル名のソートならともかく、決済システムで「10万円」が「2万円」より少なかったら問題になりますよね。 PHPで型のことを考えずに比較をするとバグの原因になります。以下の式はすべて true ですが、意外なものはありませんか。 この続きは以下をご覧くださいhttp://resocia.jp/column/5819/
この記事のキーワード

人気記事トップ10

人気記事ランキングをもっと見る