Php uasort问题-首先输出的最大值

Php uasort问题-首先输出的最大值,php,mysql,sql,Php,Mysql,Sql,如果我在一个对象中有两列 A->值为10 8 6 4 B->值为9 7 5 3 我想把B合并成10下9,8下7等的A uasort($TopConsumers,array('Utilities','orderconsumers')); public static function orderConsumers($TopConsumers) { $a = $TopConsumers->outTotal; $b = $TopConsumers->inTotal;

如果我在一个对象中有两列

A->值为10 8 6 4

B->值为9 7 5 3

我想把B合并成10下9,8下7等的A

uasort($TopConsumers,array('Utilities','orderconsumers'));
public static function orderConsumers($TopConsumers)
{
    $a = $TopConsumers->outTotal;
    $b = $TopConsumers->inTotal;
    if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? -1 : +1;
}

为什么不起作用?

您需要先合并数组,然后对它们进行排序

$merged = array_merge($TopConsumers->outTotal, $TopConsumers->inTotal);
sort($merged);

首先需要合并数组,然后对它们进行排序

$merged = array_merge($TopConsumers->outTotal, $TopConsumers->inTotal);
sort($merged);

排序函数需要有$a和$b作为参数。而不是数组本身

public static function orderConsumers($a, $b)
{
    if ($a->outTotal == $b->inTotal) {
        return 0;
    }
    return ($a->outTotal > $b-inTotal) ? -1 : +1;
}

也就是说,按两列排序似乎有点奇怪。我不确定这是否能满足你的需求。通常,您会在这样的用户排序函数中比较相同的列名

排序函数需要有$a和$b作为参数。而不是数组本身

public static function orderConsumers($a, $b)
{
    if ($a->outTotal == $b->inTotal) {
        return 0;
    }
    return ($a->outTotal > $b-inTotal) ? -1 : +1;
}

也就是说,按两列排序似乎有点奇怪。我不确定这是否能满足你的需求。通常,您会在这样的用户排序函数中比较相同的列名

我需要它们只显示其中一个值,抱歉,因为没有使用
uasort()
@Luke:抱歉,这是什么意思?没有重复的?-->
array_unique()
对不起,我在没有足够信息的情况下问错了问题。我的错,谢谢你的帮助!我需要它们只显示其中一个值,抱歉,因为没有使用
uasort()
@Luke:抱歉,这是什么意思?没有重复的?-->
array_unique()
对不起,我在没有足够信息的情况下问错了问题。我的错,谢谢你的帮助!我要做的是我有两个collumn,一个用于入站流量,一个用于出站流量。我需要在网页上显示哪个更高。这是通知我们的员工,他们正在使用大量的出站或入站流量。我们会让他们保持秩序。希望能提供一些见解。公共静态函数顺序c($a,$b){if($a->inTotal==$b->outTotal){return 0;}return($a->inTotal>$b->outTotal)?-1:+1;}***7541.11***6901.45***7070.75***10037.45不起作用:(-(我明白你的意思,但这样想:$a和$b在你的数据集中是不同的行。你在两个不同的行上比较出站和入站,而不是同一行。我只是做了一个小测试,这肯定不会给你你想要的。抱歉,我一定把你弄糊涂了。这是我的data TopConsumers列->inTotal的示例:1000、2000、3000列->总计5000、1000、8000它应显示8000(out)、5000(out)、2000(in)我要做的是我有两个collumn,一个用于入站流量,一个用于出站流量。我需要在网页上显示哪个更高。这是通知我们的员工他们正在使用大量的出站或入站流量。我们会认为他们正常。希望这能提供一些见解。公共静态函数order c($a,$b){if($a->inTotal==$b->outTotal){return 0;}return($a->inTotal>$b->outTotal)?-1:+1;}***7541.11***6901.45***7070.75***10037.45不起作用:(-(我明白你的意思,但这样想:$a和$b在你的数据集中是不同的行。你在两个不同的行上比较出站和入站,而不是同一行。我只是做了一个小测试,这肯定不会给你你想要的。抱歉,我一定把你弄糊涂了。这是我的data TopConsumers列->inTotal的示例:1000、2000、3000列->总计5000、1000、8000它应显示8000(out)、5000(out)、2000(in)。