PHP - сортировка многомерного массива - PullRequest
0 голосов
/ 17 декабря 2011
Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [name] => Nicki Escudero
                    [id] => 27700035
                )

            [1] => Array
                (
                    [name] => Yorgo Nestoridis
                    [id] => 504571368
                )
         )
)

Как мне отсортировать этот многомерный массив, используя его имя?

Я пробовал с array_multisort, но он не работает.

Ответы [ 3 ]

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

Если это единственные два значения, которые у вас есть, вы можете попробовать сделать id индексом массива, а имя может быть значением. Затем вы можете использовать asort для сортировки массива по имени и поддержания отношения индекс-значение.

Делая id индекс, я имею в виду $array[27700035] вернул бы Nicki Escudero.

// Copy the array to a new array.
foreach($array as $val) {
    $newArray[$val['id']] = $val['name'];
}

asort($newArray);

Редактировать: я ознакомился с руководством, и вы также можете использовать usort с пользовательской функцией сравнения. Хотя я никогда не использовал это и могу очень мало помочь ... PHP usort

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

Если вы хотите использовать array_multisort, вы должны использовать следующее:

$array = array(
    'data' => array(
        array(
            'name' => 'Yorgo Nestoridis',
            'id'   => 504571368,
        ),  
        array(
            'name' => 'Nicki Escudero',
            'id'   => 27700035,
        ),  
    ),  
);  

$names = array();
foreach($array['data'] as $datum) {
    $names[] = $datum['name'];
}   

array_multisort($names, SORT_ASC, $array['data']);
var_dump($array); // now sorted by name

Другой вариант - использовать пользовательскую функцию сравнения:

function compareNames($a, $b) {
    return strcmp($a['name'], $b['name']);
}   

usort($array['data'], 'compareNames');
0 голосов
/ 17 декабря 2011

Уже отсортировано :-) Что вы хотите отсортировать?И откуда поступают данные?если вы получаете это из БД, вы должны сортировать по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...