[PHP-users 793] 多次元配列にぶら下がる配列の情報でソート

横山 芳成 php-users@php.gr.jp
Sat, 21 Jul 2001 11:14:05 +0900


こんにちわ、横山です。

「[PHP-jp 11621] 二次元配列のソーティン グをするには? 」
に似たようなことをやりたいのですが。。。。


$hoge = array( 'hoge1' => array(1,2,3,4,5,6,7,8,9),
               'hoge2' => array(9,8,5,6,5,4,3,2,1),
               'hoge3' => array(6,5,7,2,7,9,9,1,3),
               'hoge4' => array(7,1,9,2,8,4,6,5,3));

上記のような配列を

$sort_keys = array( array('key' => 'hoge3', 'order' => '昇順'),
                    array('key' => 'hoge2', 'order' => '昇順'),
                    array('key' => 'hoge1', 'order' => '昇順'));
のソート指定に従って、優先度をhoge3→hoge2→hoge1として

$hoge = array( 'hoge1' => array(8,4,9,2,1,3,5,7,6),
               'hoge2' => array(2,6,1,8,9,5,5,3,4),
               'hoge3' => array(1,2,3,5,6,7,7,9,9),
               'hoge4' => array(5,2,3,1,7,9,8,6,4));
のようにソートしたいと考えています。

array_multisortにて
array_multisort($hoge['hoge3'], SORT_REGULAR, SORT_ASC,
                $hoge['hoge2'], SORT_REGULAR, SORT_ASC,
                $hoge['hoge1'], SORT_REGULAR, SORT_ASC,
                $hoge['hoge4']);
と逃げはあるのですが、hoge*が可変の場合を想定して何とかソート判定の関数
をバインドして実行できないか考えています。

どなたか良いアルゴリズムはありませんでしょうか?

                                                                      以上

--------------------------------------------------------------------------
横山  芳成   (株)NEC情報システムズ
e-mail:yokoyama@sid.nis.nec.co.jp
       yokoyama@pb.nec.jp.com
--------------------------------------------------------------------------