Php中按计数结果对数组排序

Php中按计数结果对数组排序,php,Php,我想根据php循环中的结果计数对结果进行排序 <?php foreach($groups as $group): ?> <?php if(count($group->getAllgroupmember()) > 0): ?> <tr> <td><?php echo $group->id ?></td> &

我想根据php循环中的结果计数对结果进行排序

<?php foreach($groups as $group): ?>
        <?php if(count($group->getAllgroupmember()) > 0): ?>
            <tr>
                <td><?php echo $group->id ?></td>
                <td><?php echo $group->name ?></td>
                <td><?php echo number_format(count($group->getAllgroupmember())) ?></td>
            </tr>
        <?php endif ?>
        <?php var_dump(count($group->getAllgroupmember())) ?>
    <?php endforeach ?>
如何根据结果计数进行排序?最高值(4)应位于0位置。我尝试了usort函数

<?php foreach(usort($groups) as $group): ?>
        <?php if(count($group->getAllgroupmember()) > 0): ?>
            <tr>
                <td><?php echo $group->id ?></td>
                <td><?php echo $group->name ?></td>
                <td><?php echo number_format(count($group->getAllgroupmember())) ?></td>
            </tr>
        <?php endif ?>
        <?php var_dump(count($group->getAllgroupmember())) . "<br>" ?>
    <?php endforeach ?>

但是运气不好。你知道这要填多满吗?

需要一个callable作为第二个参数。见下文:



我在上面构建的排序函数获取每个传入对象的成员计数,并使用这些数字按降序对数组进行排序

我在上面添加了一个指向usort方法的链接。在查看usort文档后,您应该能够进一步理解我编写的函数

我希望这有帮助

<?php foreach(usort($groups) as $group): ?>
        <?php if(count($group->getAllgroupmember()) > 0): ?>
            <tr>
                <td><?php echo $group->id ?></td>
                <td><?php echo $group->name ?></td>
                <td><?php echo number_format(count($group->getAllgroupmember())) ?></td>
            </tr>
        <?php endif ?>
        <?php var_dump(count($group->getAllgroupmember())) . "<br>" ?>
    <?php endforeach ?>
<?php
$usort($groups, function($a, $b){
    $countA = count($a->getAllgroupmember());
    $countB = count($b->getAllgroupmember());
    if ($countA  == $countB) {
        return 0;
    }
    return ($countA > $countB) ? -1 : 1;
});
?>
<?php foreach($groups as $group): ?>
        <?php if(count($group->getAllgroupmember()) > 0): ?>
            <tr>
                <td><?php echo $group->id ?></td>
                <td><?php echo $group->name ?></td>
                <td><?php echo number_format(count($group->getAllgroupmember())) ?></td>
            </tr>
        <?php endif ?>
        <?php var_dump(count($group->getAllgroupmember())) . "<br>" ?>
    <?php endforeach ?>