2

我经历了所有类似的问题,但找不到答案……所以就这样吧。

我当前的数组,简化:

[顺序] => 数组
        (
            [0] => 数组
                (
                    [strSupplier] => XYZ
                    (改变其他领域)

                )

            [1] => 数组
                (
                    [strSupplier] => XYZ
                    (改变其他领域)
                )

            [2] => 数组
                (
                    [strSupplier] => YYZ
                    (改变其他领域)
                )

        )

代码:

                函数 custom_sort2($a,$b) {
                    返回 $a['strSupplier']>$b['strSupplier'];
                }  
                // 对多维数组进行排序            
                usort($tempOrderArray, "custom_sort2");

目前,我只对供应商进行排序,但是,我需要确保关键是第二个排序标准,我不确定它是否是。

有没有办法可以保证先按 strSupplier 排序,然后按 key 排序?如果这是内置在 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 回答