给定$my_array
中存储的对象数组,我想提取具有最高count
值的2个对象,并将它们放在单独的对象数组中。该数组的结构如下。
我将如何做到这一点?
array(1) {
[0]=> object(stdClass)#268 (3) {
["term_id"]=> string(3) "486"
["name"]=> string(4) "2012"
["count"]=> string(2) "40"
}
[1]=> object(stdClass)#271 (3) {
["term_id"]=> string(3) "488"
["name"]=> string(8) "One more"
["count"]=> string(2) "20"
}
[2]=> object(stdClass)#275 (3) {
["term_id"]=> string(3) "512"
["name"]=> string(8) "Two more"
["count"]=> string(2) "50"
}
答案 0 :(得分:5)
你可以通过很多方式做到这一点。一种相当天真的方式是使用usort()
对数组进行排序,然后弹出最后两个元素:
usort($arr, function($a, $b) {
if ($a->count == $b->count) {
return 0;
}
return $a->count < $b->count ? -1 : 1
});
$highest = array_slice($arr, -2, 2);
修改强>
请注意,前面的代码使用匿名函数,该函数仅在PHP 5.3+中可用。如果你正在使用&lt; 5.3,你可以使用正常的函数:
function myObjSort($a, $b) {
if ($a->count == $b->count) {
return 0;
}
return $a->count < $b->count ? -1 : 1
}
usort($arr, 'myObjSort');
$highest = array_slice($arr, -2, 2);
答案 1 :(得分:0)
您可以使用array_walk()然后编写一个检查计数值的函数。