2014-01-08 4 views
0

Рассмотрим следующий ассоциативный массив:PHP - Multisort на ассоциативном массиве

$arrEmployees['marco polo'] = array(age => 40, service => 5); 
$arrEmployees['jane austen'] = array(age => 30, service => 9); 
$arrEmployees['carl marx'] = array(age => 30, service => 7); 

как я могу использовать array_multisort на заказ по возрасту по алфавиту и услуг по алфавиту с конца? Пример # 3 в php.net, кажется, работает только с числовыми индексами ...

ответ

1
$arrEmployees['marco polo'] = array(age => 40, service => 5); 
$arrEmployees['jane austen'] = array(age => 30, service => 9); 
$arrEmployees['carl marx'] = array(age => 30, service => 7); 

foreach ($arrEmployees as $key => $row) { 
    $age[$key] = $row['age']; 
    $service[$key] = $row['service']; 
} 

array_multisort($age, SORT_DESC, $service, SORT_ASC, $arrEmployees); 

var_dump($arrEmployees); 

дает

array(3) { 
    ["marco polo"]=> 
    array(2) { 
    ["age"]=> 
    int(40) 
    ["service"]=> 
    int(5) 
    } 
    ["carl marx"]=> 
    array(2) { 
    ["age"]=> 
    int(30) 
    ["service"]=> 
    int(7) 
    } 
    ["jane austen"]=> 
    array(2) { 
    ["age"]=> 
    int(30) 
    ["service"]=> 
    int(9) 
    } 
} 

, который является правильным, и все ассоциативные индексы остаются нетронутыми

+0

я получаю " Размер массива является непоследовательным », а массив все тот же. – user3174311

+0

Не запускать код точно так, как я показал, это не так, с массивом, который вы предоставили - http://3v4l.org/SLa2E#tabs - так что все записи в вашем реальном массиве имеют значение «age» и «service»? –

Смежные вопросы