人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Array
(
[0] => Array
(
[a] => 1番目
[b] => 1231231-B-00000001
[c] => 2006/11/21
[i] => 2006-11-16 14:03:01
)
[1] => Array
(
[a] => 4番目
[b] => 22222222-B-000005
[c] => 2006/12/08
[i] => 2006-11-17 12:02:07
)
[2] => Array
(
[a] => 2番目
[b] => 1231232-R-000001
[c] => 2006/11/29
[i] => 2006-11-17 13:51:38
)
[3] => Array
(
[a] => 3番目
[b] => 22222224-B-000005
[c] => 2006/12/08
[i] => 2006-11-17 11:02:07
)
)
この配列をまず、bの項目で昇順に並べて次に
iの項目で昇順に並べたいのですが
PHP4でソート処理をするにはどうしたらいいのでしょうか?

●質問者: hopefully
●カテゴリ:就職・転職 コンピュータ
✍キーワード:2006 2006-11-16 2006-11-17 ソート 配列
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kno
●35ポイント

array_multisort()関数でこういうことができそうです。

http://jp.php.net/manual/ja/function.array-multisort.php

// 列方向の配列を得る

foreach ($data as $key => $row) {

$volume[$key] = $row['volume'];

$edition[$key] = $row['edition'];

}

// データを volume の降順、edition の昇順にソートする。

// $data を最後のパラメータとして渡し、同じキーでソートする。

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

◎質問者からの返答

出来ましたwww

ありがとうございますwww


2 ● backupper
●35ポイント

これは、2次配列の項目であるBでソートし、B項目だけでは比較できない場合はi項目でもソートするという意味ですよね?

以下の様にしてみました。

用意されたデータでは、b項目だけで並び順が決定されてしまうので、3番目のb項目を4番目と同じ値にして試しています。結果bでは判定できず、i項目の日時で3番目が4番目より上にランクされます。

<?php

$array = array(
 "0" => array("a" => "1番目", "b" => "1231231-B-00000001", "c" => "2006/11/21", "i" => "2006-11-16 14:03:01"),
 "1" => array("a" => "4番目", "b" => "22222222-B-000005", "c" => "2006/12/08", "i" => "2006-11-17 12:02:07"),
 "2" => array("a" => "2番目", "b" => "1231232-R-000001", "c" => "2006/11/29", "i" => "2006-11-17 13:51:38"),
 "3" => array("a" => "3番目", "b" => "22222222-B-000005", "c" => "2006/12/08", "i" => "2006-11-17 11:02:07")
 );
usort($array, "mycmp");
print "<table border=?"1?">?n";
foreach ($array as $hash) {
 print "<tr>?n";
 foreach ($hash as $key => $value) {
 print " <td>{$key} =&gt; {$value}</td>?n";
 }
 print "</tr>?n";
}
print "</table>?n";


function mycmp($a, $b) {
 $compare = $a["b"] - $b["b"];
 if ($compare == 0) {
 $compare = $a["i"] - $b["i"];
 }
 return $compare;
}
?>
◎質問者からの返答

そうですwww

ありがとうございますwww

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ