PHP сортирует массив массивов по индексу в массивах - PullRequest
0 голосов
/ 15 сентября 2011

Допустим, у вас есть массив, который выглядит следующим образом:

$myArray []= array('firstname' => 'John' , 'lastname'=> 'Johnson');

$myArray []= array('firstname' => 'Adam' , 'lastname'=> 'Tyson');

$myArray []= array('firstname' => 'Mike' , 'lastname'=> 'Robinson');

$myArray []= array('firstname' => 'David' , 'lastname'=> 'Jackson');

Как вы можете отсортировать $ myArray по фамилии?

Ответы [ 3 ]

5 голосов
/ 15 сентября 2011

Это также работает

<code><?php
    $myArray []= array('firstname' => 'John' , 'lastname'=> 'Johnson');
    $myArray []= array('firstname' => 'Adam' , 'lastname'=> 'Tyson');
    $myArray []= array('firstname' => 'Mike' , 'lastname'=> 'Robinson');
    $myArray []= array('firstname' => 'David' , 'lastname'=> 'Jackson');

    foreach ($myArray as $array) {
        $lastnames[] = $array['lastname'];
    }

    array_multisort($lastnames,SORT_STRING,$myArray);
    echo '<pre>',print_r($myArray,1),'
';
3 голосов
/ 14 июня 2013

Я получил его на работу, используя usort () и замыкание.

        usort($myArray, function($a, $b){
            return strcasecmp($a['lastname'], $b['lastname']);
        });
2 голосов
/ 15 сентября 2011

Это должно сделать то, что вам нужно:

<?php
function cmp($a, $b) {
    return strcasecmp($a['lastname'], $b['lastname']);
}

$myArray[] = array('firstname' => 'John', 'lastname'=> 'Johnson');
$myArray[] = array('firstname' => 'Adam', 'lastname'=> 'Tyson');
$myArray[] = array('firstname' => 'Mike', 'lastname'=> 'Robinson');
$myArray[] = array('firstname' => 'David', 'lastname'=> 'Jackson');

uasort($myArray, 'cmp');

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

...