PHP(ピー・エイチ・ピー)

PHP

array_multisort()関数を使って多次元配列をソートしてみる【PHP】

角丸ボタン-L

配列をソートする時、

例えば、

$arr_data = array("テストデータ03", "テストデータ02", "テストデータ04", "テストデータ01");

という配列があったとすると、

 

sort($arr_data);

とすれば昇順に、

 

rsort($arr_data);

とすれば降順に簡単にソートできます。

 

これ、

多次元配列も同じようにソートできるの?

 

となると、

それは無理です。

 

じゃあ、

多次元配列の時はどうやってソートするのかといえば、

array_multisort()関数を使ってやります。

 

sort()関数やrsort()関数に比べれば多少面倒ですが、

慣れればそんなに難しいものでもありません。

 

例えば、

$arr_data = array(
 3 => array(
  "text" => "テストデータ03",
  "modified" => "2012-05-13",
 ),
 4 => array(
  "text" => "テストデータ04",
  "modified" => "2012-05-14",
 ),
 1 => array(
  "text" => "テストデータ01",
  "modified" => "2012-05-11",
 ),
 2 => array(
  "text" => "テストデータ02",
  "modified" => "2012-05-12",
 )
);

のような配列データを更新日(modified)順に並べ替えたい時には、

foreach($arr_data as $key => $value){
 $modified[$key] = $value["modified"];
}
array_multisort($modified, SORT_DESC, $arr_data);

とするだけです。

 

要は、

foreach()を使って更新日(modified)の配列を作ってやり、

あとは、

array_multisort()関数に適切にデータをセットして実行するだけ。

 

これだけで、

多次元配列のソートにも対応できます。

 

因みに、

データを昇順に並び替えたい場合には、

2番目の引数に「SORT_DESC」ではなく「SORT_ASC」をセットしてやります。

 

 

http://blog.quall.net/program/235/

この辺のサイトに書いてくれていることを参考すれば、

多次元配列を複数項目でソートするも簡単にできそうですね!!

WordPress短期学習プログラム

関連記事

  1. PHP

    PHPExcel エクセルをダウンロード

    PHPExcelを使ってエクセルファイルを出力する場合、ファイルを…

  2. PHP

    mb_strimwidth()が便利だと思った理由

    最近便利だと思った関数に、mb_strimwidth()があります…

  3. Security(セキュリティ)

    PHP

    PHP パスワードのクライアントへの表示について

    サイト制作を行っていると、会員制サイトを構築することも多々あると思…

  4. PHP

    in_array()関数では第3引数(true)を設定する

    ある配列の中に特定の値が貼っているかをチェックする場合、in_ar…

  5. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】strpos()関数とstrstr()関数

    ある文字列の中に特定の文字列が含まれているかをチェックする場合に、…

  6. Database(DB:データベース)

    PHP

    【phpPgAdmin】データ型に「integer」を指定

    phpPgAdminの管理画面から、データ型に「integer」を…

最近の記事

  1. CakePHP
  2. PHP(ピー・エイチ・ピー)
  3. PHP(ピー・エイチ・ピー)
  4. PHP(ピー・エイチ・ピー)
  5. WP:WordPress(ワードプレス)
  6. WP:WordPress(ワードプレス)
  7. WP:WordPress(ワードプレス)
  8. Security(セキュリティ)
  9. WP:WordPress(ワードプレス)
  10. WP:WordPress(ワードプレス)
PAGE TOP