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 ) ;

降順

<?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 ) ;

多次元配列の場合

昇順

<?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 ) ;

降順

<?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 ) ;
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月22日 (木)
コンテンツを公開しました。