-1

たとえば、次のような配列があります。

Array 
(
   [0] => Array
     (
        [a] => 1
        [b] => 0
        [c] => 1
        [d] => 1     
     )
    [1] => Array
    (
        [a] => 2
        [b] => 0
        [c] => 3
        [d] => 3 
    )
    [4] => Array
    (
        [a] => 5
        [b] => 1
        [c] => 3
        [d] => 2 
    )    

)

最大の [d] 値を持つ配列のみを受け取りたいと思います。したがって、この場合:

Array (
        [a] => 2
        [b] => 0
        [c] => 3
        [d] => 3
    )  

それを行うための最も簡単で最適な方法は何ですか? ありがとう!

4

3 に答える 3

1
$array = Array 
(
   [0] => Array
     (
        [a] => 1
        [b] => 0
        [c] => 1
        [d] => 1     
     )
    [1] => Array
    (
        [a] => 2
        [b] => 0
        [c] => 3
        [d] => 3 
    )
    [4] => Array
    (
        [a] => 5
        [b] => 1
        [c] => 3
        [d] => 2 
    ));

    uasort ( $array, function ($a, $b) {
            return $a['d'] > $b['d'];
        }
    );

$valueYouAreSearchingFor = $array[0];

uasort を使用して、無名関数を使用して配列を並べ替えました。ForEach ループよりも高速かどうかをテストする必要がありますが、間違いなくもっと楽しいです (少なくとも私に尋ねれば:))

元の配列を変更したくない場合は、コピーを作成し、コピーを並べ替えます。

PS: Google はあなたの友達です...

于 2015-02-05T19:24:06.610 に答える