PHP многомерный массив (usort) - PullRequest
       29

PHP многомерный массив (usort)

4 голосов
/ 28 февраля 2012

У меня есть ассоциативный массив, подобный этому

Array
(
    ["News 1"] => Array
        (
            [text] => tests
            [language] => 
            [advertiserCompetitionScale] => 5
            [avgSearchVolume] => 7480000
            [lastMonthSearchVolume] => 9140000
        )

    ["News 2"] => Array
        (
            [text] => personality tests
            [language] => 
            [advertiserCompetitionScale] => 5
            [avgSearchVolume] => 165000
            [lastMonthSearchVolume] => 201000
        )

    ["News 3] => Array
        (
            [text] => online tests
            [language] => 
            [advertiserCompetitionScale] => 5
            [avgSearchVolume] => 246000
            [lastMonthSearchVolume] => 301000
        )

)

Мне удалось отсортировать его по столбцу, который я хочу (например, LastMonthSearchVolume)

// compare function 
function cmpi($a, $b) 
{ 

     return strcmp($a["lastMonthSearchVolume"], $b["lastMonthSearchVolume"]); 
} 

// do the array sorting 
usort($latest_array, 'cmpi');

Проблема заключается в том, когда я сбрасываюмассив, чтобы увидеть результат, который usort сломал мой ассоциативный массив, удалив "News 1", "News 2" и т. д. и заменив его на 0,1,2 ...

Есть ли какое-либо решение для сортировкисохранить имя столбца?

Спасибо

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012

Вместо usort используйте функцию uasort, которая сохраняет связь индекса.

1 голос
/ 28 февраля 2012

Используйте взамен uasort . usort не поддерживает ассоциативные ключи, а uasort -.

...