2012-05-21 5 views
1

Я ищу пользовательскую функцию, которая будет уважать порядок массива и сортировать его по индексу «name». Функция strcasecmp() не понимает буквенно-цифровые значения, так как люди читают ее. Он считает, что «Яблоки 12» - это меньшая ценность, чем «Яблоки 5». Я попробовал этот метод, но не могу найти функцию для сравнения буквенно-цифровое значение:php sort многомерный массив по алфавитно-цифровому значению

$array = array(
    0 => array(
     'id' => 2, 
     'type' => 'Apples', 
     'name' => 'Apples 5', 
    ), 
    1 => array(
     'id' => 3, 
     'type' => 'Grapes', 
     'name' => 'Apples', 
    ), 
    2 => array(
     'id' => 4, 
     'type' => 'Apples', 
     'name' => 'Apples 4', 
    ), 
    3 => array(
     'id' => 5, 
     'type' => 'Grapes', 
     'name' => 'Apples 01', 
    ), 
    4 => array(
     'id' => 6, 
     'type' => 'Apples', 
     'name' => 'Apples 1', 
    ), 
    5 => array(
     'id' => 7, 
     'type' => 'Grapes', 
     'name' => 'Apples 12', 
    ) 
); 

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

foreach($array as $single) { 
    echo $single['name'].'<br />'; 
} 

Неожиданный результат из кода выше:

Apples 
Apples 01 
Apples 1 
Apples 12 
Apples 4 
Apples 5 

Результат я хотел достичь:

Apples 
Apples 01 
Apples 1 
Apples 4 
Apples 5 
Apples 12 

Любые идеи ?

ответ

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