2

同様の質問をすべて調べましたが、答えが見つかりませんでした....だからここに行きます。

私の現在の配列、簡略化:

[順序] => 配列
        (
            [0] => 配列
                (
                    [strSupplier] => XYZ
                    (他のフィールドはさまざま)

                )

            [1] => 配列
                (
                    [strSupplier] => XYZ
                    (他のフィールドはさまざま)
                )

            [2] => 配列
                (
                    [strSupplier] => YYZ
                    (他のフィールドはさまざま)
                )

        )

コード:

                関数 custom_sort2($a,$b) {
                    $a['strSupplier']>$b['strSupplier']; を返します。
                }  
                // 多次元配列を並べ替える            
                usort($tempOrderArray, "custom_sort2");

現在、仕入先のみでソートしていますが、キーが 2 番目のソート基準であることを確認する必要があり、そうであるかどうかはわかりません。

最初に strSupplier でソートされ、次にキーでソートされることを保証できる方法はありますか? これが uasort または usort 関数に組み込まれている場合は、申し訳ありませんが、表示されませんでした。

4

2 に答える 2

1

あなたの配列はこれを望んでいます:

[order] => Array
        (
            [0] => Array
                (
                    [key] => 0,
                    [strSupplier] => 'XYZ',
                    //(varying other fields)

                )

            [1] => Array
                (
                    [key] = 1,
                    [strSupplier] => 'XYZ',
                    //(varying other fields)
                )

            [2] => Array
                (
                    [key] = 2,
                    [strSupplier] => 'YYZ',
                    //(varying other fields)
                )

        )

次に、並べ替えると、次のようになります。

function custom_sort2($a, $b) {
    $cmp = $cmpstr = strcmp($a['strSupplier'], $b['strSupplier']); //Compare the string
    $cmpkey = ($a['key'] == $b['key'] ? 0 : ($a['key'] > $b['key'] ? 1 : -1)); //Compare the key
    if ($cmpkey == 1)
        $cmp = ($cmpstr >= 0) ? 1 : 0;
    return $cmp; //If we are moving the element forward, then we need to check the key.
}
// Sort the multidimensional array
uasort($array, "custom_sort2");
于 2013-01-14T20:37:14.343 に答える
0

最初にksortを使用してから、サプライヤーで並べ替えることができます。

于 2013-01-14T19:20:27.743 に答える