我有一个包含许多值的对象数组。这些值设置正确,此数组中的数据也以正确的方式显示,符合对象的顺序。
我现在想要的是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);
}
我不确定您是否可以看到代码和我想要做的事情,但希望有人能够显示我的错误,或者展示其他方式来实现同样的目标?
答案 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);