按数组中包含的最大数字随机播放

时间:2011-12-07 21:24:29

标签: php arrays sorting foreach

这被困在PHP foreach中,其中有多个结果被提取。

$frontpage[] = array(
    'perc' => $percentage, 
    'id' => $result->ID
);

然后我想根据'perc'中包含的值按降序排序$frontpage,所有值都是数字。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用uasort()?它是一个函数,您可以使用它定义一个比较某些值的回调函数。

function customCompare($a, $b)
{
    if ($a['perc'] == $b['perc']) {
        return 0;
    }
    return ($a['perc'] < $b['perc']) ? -1 : 1;
}

uasort($frontpage, 'customCompare');
$frontpage = array_reverse($frontpage); // for descending order

See it in action here.

答案 1 :(得分:0)

这里有很多关于如何使用usort的例子:http://php.net/manual/en/function.usort.php

我写了一个简单的测试示例,假设数组中的'perc'键始终是第一个。

<?php

function percentCompare($a, $b)
{
        if ($a == $b)
                return 0;

        //we want it decending
        return ($a > $b) ? -1 : +1;
}

$frontpage[] = array();

//Fill the array with some random values for test
for ($i = 0; $i < 100; $i++)
{
        $frontpage[$i] = array(
                'perc' => rand($i, 100),
                'id' => $i
                );
}

//Sort the array
usort($frontpage, 'percentCompare');

print_r($frontpage);
?>