These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は3月28日(木)21時17分。 今日のニュースは何でしょう?


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2008年12月 来月
01 2 03 4 5 06
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年12月11日(木)

[PHP] order by 風な sort 関数

ORDER BY で複数カラム指定したような sort 関数がないかな。 といった話があったので、試しに作ってみました。 使い方サンプル
$array = array(
    array('name' => 'berry',  'price' => 200, 'date' => '20081211')
    array('name' => 'orange', 'price' => 100, 'date' => '20081210'),
    array('name' => 'apple',  'price' => 200, 'date' => '20081212'),
    );


$keys = array('price', 'date');
$orders = array(SORT_REGULAR, SORT_REGULAR + SORT_REVERSE);

order_by_sort($array, $keys, $orders);

var_export($array);
実行結果
array (
  0 =>
  array (
    'name' => 'orange',
    'price' => 100,
    'date' => '20081210',
  ),
  1 =>
  array (
    'name' => 'apple',
    'price' => 200,
    'date' => '20081212',
  ),
  2 =>
  array (
    'name' => 'berry',
    'price' => 200,
    'date' => '20081211',
  ),
)
define がダサいですが、実際に使う場合はクラスにまとめるので、 あまり考えないでおきます。

関数名:

multikey_sort とかにしとこうかしら。

2008年12月16日(火)

[PHP] order by 風な sort 関数 (2)

そして、array_multisort で同じ事が出来ると同僚から指摘を受ける… ○rz 公式マニュアルを見ると、マトリックスソートの説明が 前半に書いてあって、使えないと思い込んでましたが 列と行を転置すれば同じ事のようで、
<?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);
?>
とすれば、マルチカラムでのソートが実現できるようで。
どこまで便利なんでしょう、PHP は…

これで、2 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project