2017-04-11 8 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처럼 더 짧은 방법이 있나요?

감사합니다.

+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; 
}); 
관련 문제