如果是内部数组,则根据值对多维数组进行排序

时间:2016-08-26 14:07:55

标签: php arrays multidimensional-array

我有以下数组:

Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 1
            [2] => Text
            [3] => 0

        )

    [1] => Array
        (
            [0] => 3
            [1] => 1
            [2] => Another Text
            [3] => 0

        )   
}

我需要通过内部数组的索引号2的值来命令outter数组,因此它将是:

Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 1
            [2] => Another Text
            [3] => 0

        )

    [1] => Array
        (
            [0] => 3
            [1] => 1
            [2] => Text
            [3] => 0

        )   
}

我找到了像sort()array_multisort()这样的方法,但似乎它们不适合这种情况。原始数组也有很多项,所以应该是一个快速的算法。

php是否有针对此案例的任何实现方法?

2 个答案:

答案 0 :(得分:0)

您可以使用usort函数,例如:

function sortBySecondIndex($a,$b) {
    return strnatcmp($a[2],$b[2]);
}

usort($array,"sortBySecondIndex");

答案 1 :(得分:0)

好吧,我不能说这会有多快,但是你做不了类似的事情:

$tmpArray = array();
foreach($multiDimArray as $index=>$array)
{
    $tmpArray[$array[2]] = $index;
}
ksort($tmpArray);

$finalArray = array();
foreach($tmpArray as $sortedIndex)
{
    $finalArray[] = $multiDimArray[$sortedIndex];
}

虽然,我确信必须有一种更优雅的方式来做到这一点。