2011-12-21 2 views
2

Можно создать дубликат:
How do I sort a multidimensional array in phpсортировки в алфавитном порядке

У меня есть массив значений и хочу, чтобы отсортировать значения на основе алфавитного порядка

моего текущий массив

$original_array = array(
     array('id' => 123456, 'name'=>michael), 
     array('id' => 222222, 'name'=>harolds), 
     array('id' => 1111111, 'name'=>albert) 
    ); 

поэтому результат смотрю после сортировки массива, как показано ниже

$original_array = array( 
     array('id' => 1111111, 'name' => albert), 
     array('id' => 222222, 'name' => harolds), 
     array('id' => 123456, 'name' => michael) 
    ); 

ответ

5

Это тип вещи, что usort() используется для:

$original_array = array(array('id'=>123456,'name'=>'michael'),array('id'=>222222,'name'=>'harold'),array('id'=>1111111,'name'=>'albert')); 

function alphasort($a, $b) { 
    if ($a['name'] == $b['name']) { 
     return 0; 
    } 
    return ($a['name'] < $b['name']) ? -1 : 1; 
} 

usort ($original_array,'alphasort'); 
var_dump($original_array); 
+0

Woww благодаря для более быстрого ответа на второй вопрос ... на самом деле я был paly с usort в 1-м местах, но не прошел никакой функции во 2-ом параметрах в методах usort ... мой плохой ... в любом случае спасибо mate – user637852

+0

@ user637852 - Вы должны принять этот ответ, чтобы отблагодарить его. :) –

0

Вы можете попробовать следующий способ.

$original_array = array(
array('id'=>123456,'name'=>'michael'), 
array('id'=>222222,'name'=>'harolds'), 
array('id'=>1111111,'name'=>'albert') 
); 

foreach ($original_array as $key => $row) { 
    $volume[$key] = $row['id']; 
    $edition[$key] = $row['name']; 
} 



array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $original_array); 

Prasad.

0

Это очень легко, просто сделать это так:

$array = array(
    array('id' => 123456, 'name' => michael), 
    array('id' => 222222, 'name' => harolds), 
    array('id' => 1111111, 'name' => albert) 
); 

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

и вы получите то, что вам нужно! Если PHP версии 5.2.x или менее, сделать это таким образом:

$array = array(
    array('id' => 123456, 'name' => michael), 
    array('id' => 222222, 'name' => harolds), 
    array('id' => 1111111, 'name' => albert) 
); 

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

usort($array, 'mysort_func_531994'); 

Читайте инструкцию для следующих функций:

  1. usort функция
  2. strcmp функция
Смежные вопросы