Перемешать по наибольшему числу, содержащемуся в массиве - PullRequest
1 голос
/ 08 декабря 2011

Это ловушка внутри PHP foreach, где извлекается несколько результатов.

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

Затем я хочу отсортировать $frontpage в порядке убывания в соответствии со значениями, содержащимися в 'perc', все из которых являются числами. Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Вы пытались использовать 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

Смотрите это в действии здесь.

0 голосов
/ 08 декабря 2011

Здесь приведено множество примеров использования 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);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...