2011-07-14 45 views
1

我有一串我想按照降序排序的字符串排列。然而,它是一个二维数组,我不知道如何实现一个将做我想做的功能。如何在PHP中按长度排序二维数组?

这里是阵列的例子:

Array 
(
    [0] => Array 
    (
     [0] => "abc" 
     [1] => "def" 
     [2] => "1234" 
    ) 

    [1] => Array 
    (
     [0] => "ghijkl" 
     [1] => "092" 
     [2] => "234234" 
    ) 

    [2] => Array 
    (
     [0] => "mn" 
     [1] => "opq" 
     [2] => "67843" 
    ) 
) 

我只在子阵列中的第一项的长度感兴趣。所以理想情况下,它会看起来像这样:

Array 
(
    [0] => Array 
    (
     [0] => "ghijkl" 
     [1] => "092" 
     [2] => "234234" 
    ) 
    [1] => Array 
    (
     [0] => "abc" 
     [1] => "def" 
     [2] => "1234" 
    ) 
    [2] => Array 
    (
     [0] => "mn" 
     [1] => "opq" 
     [2] => "67843" 
    ) 
) 

干杯,你可以给我任何帮助。

回答

5
usort($array, function ($a, $b) { return strlen($b[0]) - strlen($a[0]); }); 

(使用PHP 5.3语法)

+0

这是伟大的,除非我想它的其他方式返回由短到长的阵列。不过谢谢,我可以自己做那么多! –

+0

@Nick然后,简单地交换'$ a'和'$ b'参数。 – deceze

1
<?php 

$your_array = array 
(
    array 
    (
     "abc", 
     "def", 
     "1234" 
    ), 

    array 
    (
     "ghijkl", 
     "092", 
     "234234" 
    ), 
array 
    (
     "mn", 
     "opq", 
     "67843" 
    ) 
); 

function customSort(Array $a, Array $b){   
    return strlen($b[0]) - strlen($a[0]); 
} 

usort($your_array, 'customSort'); 
var_dump($your_array); 
+0

完美,谢谢! –

+0

这将无法正常工作。 '<'将返回'true'或'false'。虽然比较函数应该返回'0',值'<0'或值'> 0'。 – deceze

+0

虽然它确实有效,因为PHP会将false评估为0,并且评估结果为true。 –