デジットさんの生活便利サイトトップへ デジットさんの二次元配列のソート(PHP)

トップページ > ホームページ作成 > 二次元配列ソート

PHPを利用た二次元配列ソートの方法です。ここでは、CSVファイルのデータを二次元配列に読み込んでから配列のキーを指定してソートしてみました。

二次元配列のソート方法

「PHP」で二次元配列をソートするには、「usort」関数や「array_multisort」関数を使う方法があります。ここでは、自分でソートの基準を決められる「usort」関数をつかって、ソートしてみました。
以下のファイルを用意しました。2つのファイルは同じディレクトリに置いています。

  1. 二次元配列用のCSVファイル「array_data.csv」
  2. CSVファイルのデータを二次元配列にしてソートする実行ファイル「array_sort.php」

二次元配列ソートのサンプルリスト

サンプルリストは次のとおりです。

データ用ファイル「array_data.csv」

「 , 」で区切って、データを並べます。データは、登録順、項目、日付の順にしました。

1,いち,2007/1/1
2,に,2007/1/2
3,さん,2007/1/3
4,よん,2007/1/4
5,ご,2007/1/5
6,ろく,2007/1/6
7,なな,2007/1/7
8,はち,2007/1/8
9,く,2007/1/9
10,じゅう,2007/1/10

ソート用実行ファイル「array_sort.php」

ソートする実行ファイルのリストです。
「array_data.csv」を開き、二次配列変数として定義した「$dcsv」に、一行ずつ読み込んだ配列「$arry」を入力していきます。そして、「$dcsv」を「usort」関数から呼び出した関数「cmp」で定義した順にソートします。ソートは、キー「1」($dcsv[]の[1]キー)としました。「strcmp」を使用した場合、昇順に比較します。ソートしたいキーやソート順は、関数「cmp」で自由に定義することが出来ます。比較結果は、最初の引数(この例では「$a」)が 2 番目の引数(この例では「$b」)より小さいか、等しいか、大きい場合に、 それぞれゼロ未満(例えば「-1」)、ゼロに等しい(例えば「0」)、ゼロより大きい整数(例えば「1」)を返します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>PHP 二次元arrayのソート)</title>
</head>
<body>
<?php
//CSVファイル
$fname = "array_data.csv";
//ファイルを開く
$file = fopen($fname,"r");
//データを二次元アレイに格納
while ($arry = fgetcsv($file,1000,",")){
$dcsv[] = $arry;
}

//ファイルを閉じる
fclose($file);

//ソート順を定義したソート関数を呼ぶ
usort($dcsv, "cmp");
//整列してプリント
while (list($key, $value) = each($dcsv)) {
echo "<br>\$dcsv[$key]: " . $value[0] ." " . $value[1] ." ". $value[2] ;
}
//ソート関数の定義
function cmp($a, $b){
return strcmp($a[1], $b[1]);//バイナリでも使える文字列比較
}

?>
</body>
</html>

二次元配列ソートの結果

ソートした結果は、次のとおりです。ソートを指定したキーが昇順に並びました。

$dcsv[0]: 1 いち 2007/1/1
$dcsv[1]: 9 く 2007/1/9
$dcsv[2]: 5 ご 2007/1/5
$dcsv[3]: 3 さん 2007/1/3
$dcsv[4]: 10 じゅう 2007/1/10
$dcsv[5]: 7 なな 2007/1/7
$dcsv[6]: 2 に 2007/1/2
$dcsv[7]: 8 はち 2007/1/8
$dcsv[8]: 4 よん 2007/1/4
$dcsv[9]: 6 ろく 2007/1/6

これで、CSVファイルのデータを二次元配列に読み込んで、指定した配列のキーでソートすることが出来ました。
レンタルサーバーのロリポップでは、動作確認できています。

ホームページを公開するレンタルサーバーは、 ロリポップ! がお薦め、 PHP5を使うならPHP5から選ぼう。

関連ページ

ホームページ作成

PHP5を使う

アフィリエイトをする

PHPの使い方

デジットさんのホームページ入門に移行中

スポンサード リンク

Amazon.co.jpアソシエイト:
PHP&プログラミング

売れている順 新刊順

:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20php :php2_  :5

とことん!ホームページホームページ入門役立つサイトデジットさんのリストラ日記仮福真琴の精神科医はうそだらけ

2005-2010 Copyright © Digit-01 All Rights Reserved.