SYNCERのロゴ
アイキャッチ画像

配列を時間順に並び替える方法

配列を時間順に並び替えるには、array_multisort()とarray_map()とstrtotime()と組み合わせましょう。

サンプルコード

strtotime()に対応する時間の文字列を並び替えできます。SORT_ASC(昇順)、SORT_DESC(降順)を目的で使い分けて下さい。元の配列が変更されます。

一次元配列

<?php
	$array = [ "2015/06/13", "2012/04/12", "2016/01/03", "2011/02/22" ] ;

	array_multisort( array_map( "strtotime", $array ), SORT_ASC, $array ) ;

多次元配列

array_column()の引数に、対象のキー名を指定します。

<?php
	$array = [
		[
				"A" => "2015/06/13",
				"B" => "hoge" ,
		] ,
		[
				"A" => "2016/01/03",
				"B" => "fuga" ,
		] ,
		[
				"A" => "2011/02/22",
				"B" => "piyo" ,
		] ,
	] ;

	array_multisort( array_map( "strtotime", array_column( $array, "A" ) ), SORT_ASC, $array ) ;

デモ

一次元配列の場合

昇順

<?php
/*** このコードは編集できます。 ***/

	$array = [ "2015/06/13", "2012/04/12", "2016/01/03", "2011/02/22" ] ;

	array_multisort( array_map( "strtotime", $array ), SORT_ASC, $array ) ;

	var_dump( $array ) ;
array(4) {
  [0]=>
  string(10) "2011/02/22"
  [1]=>
  string(10) "2012/04/12"
  [2]=>
  string(10) "2015/06/13"
  [3]=>
  string(10) "2016/01/03"
}

降順

<?php
/*** このコードは編集できます。 ***/

	$array = [ "2015/06/13", "2012/04/12", "2016/01/03", "2011/02/22" ] ;

	array_multisort( array_map( "strtotime", $array ), SORT_DESC, $array ) ;

	var_dump( $array ) ;
array(4) {
  [0]=>
  string(10) "2016/01/03"
  [1]=>
  string(10) "2015/06/13"
  [2]=>
  string(10) "2012/04/12"
  [3]=>
  string(10) "2011/02/22"
}

多次元配列の場合

昇順

<?php
/*** このコードは編集できます。 ***/

	$array = [
		[
				"A" => "2015/06/13",
				"B" => "hoge" ,
		] ,
		[
				"A" => "2016/01/03",
				"B" => "fuga" ,
		] ,
		[
				"A" => "2011/02/22",
				"B" => "piyo" ,
		] ,
	] ;

	array_multisort( array_map( "strtotime", array_column( $array, "A" ) ), SORT_ASC, $array ) ;

	var_dump( $array ) ;
array(3) {
  [0]=>
  array(2) {
    ["A"]=>
    string(10) "2011/02/22"
    ["B"]=>
    string(4) "piyo"
  }
  [1]=>
  array(2) {
    ["A"]=>
    string(10) "2015/06/13"
    ["B"]=>
    string(4) "hoge"
  }
  [2]=>
  array(2) {
    ["A"]=>
    string(10) "2016/01/03"
    ["B"]=>
    string(4) "fuga"
  }
}

降順

<?php
/*** このコードは編集できます。 ***/

	$array = [
		[
				"A" => "2015/06/13",
				"B" => "hoge" ,
		] ,
		[
				"A" => "2016/01/03",
				"B" => "fuga" ,
		] ,
		[
				"A" => "2011/02/22",
				"B" => "piyo" ,
		] ,
	] ;

	array_multisort( array_map( "strtotime", array_column( $array, "A" ) ), SORT_DESC, $array ) ;

	var_dump( $array ) ;
array(3) {
  [0]=>
  array(2) {
    ["A"]=>
    string(10) "2016/01/03"
    ["B"]=>
    string(4) "fuga"
  }
  [1]=>
  array(2) {
    ["A"]=>
    string(10) "2015/06/13"
    ["B"]=>
    string(4) "hoge"
  }
  [2]=>
  array(2) {
    ["A"]=>
    string(10) "2011/02/22"
    ["B"]=>
    string(4) "piyo"
  }
}
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月22日 (木)
コンテンツを公開しました。