[PHP] 知っていると何かの時に得する関数 checkdate, number_format, natcasesort

投稿日:2014年8月1日

PHPには、ほかの言語では考えられないほどの組み込み関数(その言語であらかじめ用意されている関数)が存在しています。
ある処理をしたい時に時間をかけてその処理を作ったら実は組み込み関数で実装されていた、などということもあります。

知っていると何かの時に得する関数を以下で3つほど紹介します。

  • checkdate (指定の日付が存在する日付かどうかのチェックをする)
  • number_format (数字に3桁ごとにカンマを入れる)
  • natcasesort (人間がやるような自然な順番に並べ替える)

●checkdate
これは、指定の日付が実際に存在するかどうかをチェックしてくれる関数です。

使い方


if ( checkdate( 2, 29, 2003 ) ) {
    print "その日付は存在します";
}
else {
    print "その日付は存在しません";
}

実行結果


その日付は存在しません

●number_format
これは、指定の数字を3桁ごとにカンマで区切ってくれる関数です。金額の表示などのときにとても助かります。引数を指定することによりカンマ以外でも区切れます。

使い方


$money = 1000000000.54321; // 小数を含んだ数
print number_format( $money );
print number_format( $money, 2, "@", "-" );


1,000,000,000
1-000-000-000@54

●natcasesort
これは、ソートを行う時に、人間がやるように自然な並びでソートしてくれる関数です。
例えば、
「img1.jpg」「img2.jpg」「img10.jpg」「img11.jpg」
のようなファイル名を並べ替えるとき、
「img2.jpg」よりも「img10.jpg」が来てしまい
しょうがなく「img02.jpg」というふうに数字を2桁にした、
ということはないでしょうか。

この場合桁数が何桁までになるか、ということを考えておかないといけませんが、
この関数を使えば(コンピュータ的にではなく人間の直観的に)正しい並びにしてくれます。
しかも、大文字と小文字が混ざっていても大丈夫です。

使い方


$array = array('IMG0.jpg', 'img12.jpg', 'img10.jpg', 
    'img2.jpg', 'img1.JPG', 'IMG3.jpg');

sort($array);  // 通常のソート
print_r($array);

natsort($array);  // 自然ソート
print_r($array);

natcasesort($array);  // 大文字と小文字を区別しない自然ソート
print_r($array);


// 通常のソート
Array
(
    [0] => IMG0.jpg
    [1] => IMG3.jpg
    [2] => img1.JPG
    [3] => img10.jpg
    [4] => img12.jpg
    [5] => img2.jpg
)

// 自然ソート
Array
(
    [0] => IMG0.jpg
    [1] => IMG3.jpg
    [2] => img1.JPG
    [5] => img2.jpg
    [3] => img10.jpg
    [4] => img12.jpg
)

// 大文字と小文字を区別しない自然ソート
Array
(
    [0] => IMG0.jpg
    [2] => img1.JPG
    [5] => img2.jpg
    [1] => IMG3.jpg
    [3] => img10.jpg
    [4] => img12.jpg
)

南本貴之

関連記事

  • [PHP] 指定の幅で文字列をまるめる関数 mb_strimwidth[PHP] 指定の幅で文字列をまるめる関数 mb_strimwidth 「30文字以上の場合は、30文字にして最後に"…"をつける」 という風にしたい場合はけっこうあります。 本文を抜粋表示したい時などです。 しかし、『30文字以上はまるめ […]
  • [PHP] 多次元配列の複数条件ソート  array_multisortの使い方[PHP] 多次元配列の複数条件ソート array_multisortの使い方 PHPで多次元配列を扱うときに、複数条件でソートしたいときがあります。 MYSQLなどではよく行うことですが、Aの列で降順にしてかつBの列で昇順にしたい!!という場合です。 […]
  • PHPでのメール送信についてPHPでのメール送信について Webサイトでお問い合わせフォームなどを利用した場合に、 内容と送信を確認するための自動返信メールが来ることがよくあります。 そうした際にPHPでのメール送信を用いることがで […]
  • PHPでのアップロード中の進捗バーの出し方PHPでのアップロード中の進捗バーの出し方 PHPでの大容量ファイルのアップロードについては、前回まとめました。 大容量ファイルをアップロードするには時間がかかるので、今度はアップロードの進捗を知りたくなるのが人間ってヤ […]
カテゴリー: PHP, PHP 関数
  • LINEスタンプ販売中!「カフィーノ♪」 BRISKオリジナル