我正在寻找找到包含最高sort
值的对象的最短路径。
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);
}
是否有更短的方法来执行此操作,如Javascript中的reduce
?
感谢。
答案 0 :(得分:1)
最后我做到了。
$result = array_reduce($gateways, function($a, $b){
return $a ? ($a->sort > $b->sort ? $a : $b) : $b;
});