对数组中的对象进行排序

时间:2014-03-13 13:51:15

标签: php arrays

我有一个包含许多值的对象数组。这些值设置正确,此数组中的数据也以正确的方式显示,符合对象的顺序。

我现在想要的是ii订单已更改。在这个特定的例子中,根据对象' Point'值,所以具有最高Pointvalue的对象是第一个,依此类推......

我尝试做的是找到具有最高值的对象,将其推入数组并取消设置原始值。并且使用array_slice最终得到相关的数组元素。

我在第一部分也取得了成功,但问题是我一直在寻找相同的对象,所以我不知道如何从阵列中删除它。

$max = $obj[0];
    for ($j =0; $j<count($obj)-$j; $j++) {
        for ($i=0; $i<count($names); $i++) {
            if ($max->Point < $obj[$i+1]->Point) {
                $max = $obj[$i+1];
            }
        }
        if ($max->id == $obj[$j]->id) {
            unset($obj[$j]);
        }
        array_push($obj, $max);
    }

我不确定您是否可以看到代码和我想要做的事情,但希望有人能够显示我的错误,或者展示其他方式来实现同样的目标?

1 个答案:

答案 0 :(得分:1)

尝试使用usort() function。它允许您根据您定义的比较函数对数组进行排序。

function lower_points($a, $b) {
    if ($a->Point == $b->Point) return 0;
    else if ($a->Point > $b->Point) return -1;
    else return 1;
}

usort($array_of_objects, lower_points);