1

この配列全体をソートする「列」を含む2次元配列を取得しました。ここで学んだように、 を使用するのは非常に簡単array_multisortです。私の問題は、これをソートする列に、異常な方法で比較する必要がある値が含まれていることです。そこで、次のようなことを考えました。

function main(){
    $toBeSorted = array(array(...), ..., array(...));
    $sortColumnIndex = n;
    $sort_column = array();

    //Code copied from provided link
    foreach ($toBeSorted as $row)
        $sort_column []= $row[$sortColumnIndex];

    array_multisort($this->comparator(),$sort_column, $toBeSorted);
}

function comparator(a,b){
    return 1;
}

ご覧のとおり、コンパレーターをそのソート関数に渡したいと思います。私はおそらくphp以外の方法で多くのことを考えています。

4

2 に答える 2

0

array_multisort が処理できる並べ替えスペースを 1 つに変換することで解決しました。

...

$sortColumn = array();
foreach($toBeSorted as $value){
     $sortColumn[] = $this->transform($value);
}
array_multisort($sortColumn, $toBeSorted);

...

私の変換関数は、コールバックが行うと思っていたすべてのことを単純に行います。

function transform($value){
    //i.e. return real part of complex number
    //or parse strings or any kind of strange datatypes
}
于 2012-09-07T07:20:32.603 に答える
0

コールバックを使用してソートするusort関数があります。

それ以外の場合は、配列を反復処理してすべてのメンバーに関数を適用するarray_walkおよびarray_walk_recursive関数を見ることができます。

于 2012-09-06T11:02:51.237 に答える