dqrnsg6439 2012-04-27 15:54 采纳率: 100%
浏览 63
已采纳

对象数组,提取最高值

Given an array of objects stored in $my_array, I'd like to extract the 2 objects with the highest count value and place them in a separate object array. The array is structured as below.

How would I go about doing that?

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"  
     } 
  • 写回答

2条回答 默认 最新

  • douzhimao8656 2012-04-27 16:02
    关注

    You can do this many ways. One rather naive way would be to use usort() to sort the array, and then pop off the last two elements:

    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);
    

    Edit:

    Note that the previous code uses an anonymous function, which is only available in PHP 5.3+. If you're using < 5.3, you can just use a normal function:

    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条)

报告相同问题?

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题