按数组中包含的最大数字进行混洗

发布于 2024-12-20 02:50:58 字数 240 浏览 0 评论 0原文

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

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

然后,我想根据“perc”中包含的值(所有这些值都是数字)按降序对 $frontpage 进行排序。我该怎么做?

This is trapped inside a PHP foreach where there are multiple results being fetched.

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

I then want to sort $frontpage in descending order according to the values contained in 'perc', all of which are numbers. How do I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我很坚强 2024-12-27 02:50:58

您是否尝试过使用 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

在此处查看实际操作。

Have you tried to use uasort()? It's a function with which you define a callback function that compares certain values.

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.

吾性傲以野 2024-12-27 02:50:58

这里有很多关于如何使用 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);
?>

There are loads of examples on how to use usort here: http://php.net/manual/en/function.usort.php

I wrote a simple test example assuming that the 'perc' key in the array is always the first one.

<?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);
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文