2017-04-11 9 views
1

私は、最短の方法を探しています。sortの値が入っています。PHPのオブジェクトは配列の中で最高の値を持っています

array(5) { 
    [0]=> 
    object(stdClass)#212 (3) { 
    ["id"]=> 
    int(1) 
    ["display_name"]=> 
    string(8) "Activate" 
    ["sort"]=> 
    int(1) 
    } 
    [1]=> 
    object(stdClass)#213 (3) { 
    ["id"]=> 
    int(2) 
    ["display_name"]=> 
    string(7) "Cutting" 
    ["sort"]=> 
    int(2) 
    } 
    [2]=> 
    object(stdClass)#214 (3) { 
    ["id"]=> 
    int(3) 
    ["display_name"]=> 
    string(6) "Sewing" 
    ["sort"]=> 
    int(3) 
    } 
    [3]=> 
    object(stdClass)#215 (3) { 
    ["id"]=> 
    int(4) 
    ["display_name"]=> 
    string(9) "Finishing" 
    ["sort"]=> 
    int(4) 
    } 
    [4]=> 
    object(stdClass)#216 (3) { 
    ["id"]=> 
    int(5) 
    ["display_name"]=> 
    string(10) "Deactivate" 
    ["sort"]=> 
    int(5) 
    } 
} 

以下は私の練習ですが、複雑で長いコードだと思います。

// $gateways is the array contains a list of objects. 

// find max sort value in array first 
$max = max(array_map(function($row){ return $row->sort; }, $gateways)); 

// then find in array object with sort value is equal to $max value 
$filter = array_filter($gateways, function($row) use ($max){ 
    return $max == $row->sort; 
}); 

if(count($filter)){ 
    $finalResult = array_shift($filter); 
} 

reduceのように、Javascriptでこれを行う方法はありますか?

ありがとうございました。

+1

http://php.net/manual/en/function.array-reduce.php – splash58

答えて

1

最後に私はそれをしました。

$result = array_reduce($gateways, function($a, $b){ 
    return $a ? ($a->sort > $b->sort ? $a : $b) : $b; 
}); 
関連する問題