Сортировка многомерных массивов в PHP 5 - PullRequest
0 голосов
/ 21 февраля 2011

Во-первых, пожалуйста, извините, если это не ясно. Английский не мой родной язык, хотя я очень старался сделать его максимально понятным. У меня проблемы с сортировкой многомерного массива в PHP. Я рассмотрел различные функции массива на php.net и w3schools, но все еще испытываю трудности.

У меня есть многомерный массив в этой форме:

    $test_array[$counter]['post_id']
    $test_array[$counter]['votecount']
    $test_array[$counter]['content']

Я пытаюсь отсортировать массив по количеству голосов, чтобы сначала указывался идентификатор записи с наибольшим количеством голосов, а затем оттуда. Я хочу получить это в форме, такой как ниже:

Votes: 10
Post ID:  4
Content: hhgjhg

Votes: 7
Post ID:  26
Content: fhghg

Votes: 6
Post ID:  15
Content: ytryrd

Ответы [ 4 ]

1 голос
/ 21 февраля 2011

Использовать функцию usort http://php.net/manual/en/function.usort.php

0 голосов
/ 20 марта 2019

Рабочий пример

function custom_sorting($a, $b)
{
    if ($a['votecount'] == $b['votecount']) {
        return 0;
    }
    return ($a['votecount'] > $b['votecount']) ? -1 : 1;
}

 $counter = 0;
 $test_array[$counter]['post_id'] = 1;
 $test_array[$counter]['votecount'] = 15;
 $test_array[$counter]['content'] = "1-15";

 $counter = 1;
 $test_array[$counter]['post_id'] = 2;
 $test_array[$counter]['votecount'] = 18;
 $test_array[$counter]['content'] = "2-18";

  $counter = 2;
 $test_array[$counter]['post_id'] = 3;
 $test_array[$counter]['votecount'] = 10;
 $test_array[$counter]['content'] = "3-10";

usort($test_array, "custom_sorting");

print_r($test_array);
0 голосов
/ 20 марта 2019

Попробуйте код ниже

function custom_sorting($a, $b)
{
    if ($a['votecount'] == $b['votecount']) {
        return 0;
    }
    return ($a['votecount'] > $b['votecount']) ? -1 : 1;
}

usort($test_array, "custom_sorting");
0 голосов
/ 13 февраля 2013

Я знаю, что это как-то связано с этим вызовом функции.У меня тоже такая же проблема, но я думаю, что мой код неверен с моим массивом.Посмотрите на эту функцию, и, возможно, она поможет вам.Это добавляется с вашим кодом массива при обработке скрипта.

function compare($x, $y)
{
    if ($x[1] == $y[1])
    {
        retun 0;
    }
        else if ($x[1] < $y[1])
        {
            return -1;
        }
            else
            {
                return 1;
            }
}

uasort($products, 'compare');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...