2011-07-14 15 views
1

私は長さの降順にソートしたい文字列の配列を持っています。しかし、それは2次元の配列であり、私が望むことをする関数をどのように実装するのかは分かりません。ここ2次元配列を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" 
    ) 
) 

Iがサブアレイ内の最初の項目の長さにのみ興味があります。だから、理想的にはこのように見ていることになります:あなたは私を与えることができます任意の助け

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は0とfalseを1に評価するので、動作します。 –

関連する問題