1. ホーム
  2. php

[解決済み】PHPで多次元配列をソートする方法【重複あり

2022-04-13 12:50:19

質問

多次元配列にCSVデータを読み込ませています。このように、各「quot;row"」はレコードで、各「quot;column"」は同じ種類のデータが入っています。 CSVファイルを読み込むために、以下の関数を使用しています。

function f_parse_csv($file, $longest, $delimiter)
{
  $mdarray = array();
  $file    = fopen($file, "r");
  while ($line = fgetcsv($file, $longest, $delimiter))
  {
    array_push($mdarray, $line);
  }
  fclose($file);
  return $mdarray;
}

ソートする列を指定して、行を並べ替えることができるようにする必要があります。 列の一つには、以下のような形式の日付情報が含まれています。 Y-m-d H:i:s で、最新の日付が最初の行になるようにソートできるようにしたいです。

解決方法は?

を使用することができます。 array_multisort()

こんな感じで試してみてください。

foreach ($mdarray as $key => $row) {
    // replace 0 with the field's index/key
    $dates[$key]  = $row[0];
}

array_multisort($dates, SORT_DESC, $mdarray);

PHP 5.5.0では、ソートする列を取り出すだけです。 ループは必要ありません。

array_multisort(array_column($mdarray, 0), SORT_DESC, $mdarray);