我有以下数组:
Array
(
[0] => Array
(
[0] => 2
[1] => 1
[2] => Text
[3] => 0
)
[1] => Array
(
[0] => 3
[1] => 1
[2] => Another Text
[3] => 0
)
}
我需要根据内部数组的索引号2的值对外部数组进行排序,所以它将是:
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有实现的方法吗?
好吧,我不能说这将有多快,但你不能这样做:
$tmpArray = array();
foreach($multiDimArray as $index=>$array)
{
$tmpArray[$array[2]] = $index;
}
ksort($tmpArray);
$finalArray = array();
foreach($tmpArray as $sortedIndex)
{
$finalArray[] = $multiDimArray[$sortedIndex];
}
虽然,我相信一定有一个更优雅的方法来做到这一点
您可以使用ussort函数,如:
function sortBySecondIndex($a,$b) {
return strnatcmp($a[2],$b[2]);
}
usort($array,"sortBySecondIndex");