2010-08-06 14 views
1

За последние 3 дня я пытался сортировать массив, но безуспешно.Как отсортировать этот массив?

Сначала я попытался в файле php и в файле tpl, но мне не удалось отсортировать массив.

Можете ли вы мне помочь?

Это структура моего массива (благодаря smaty инструмент отладки!):

Array (5) 
attributes => Array (4) 
    23 => "1L" 
    24 => "3.5L" 
    21 => "50ml" 
    22 => "350ml" 
name => "Contenance" 
is_color_group => "0" 
attributes_quantity => Array (4) 
    23 => 1 
    24 => 500 
    22 => 500 
    21 => 500 
default => 21 

Я хочу, чтобы отсортировать его по восходящей «ID», чтобы получить этот вид результата:

Array (5) 
attributes => Array (4) 
    21 => "50ml" 
    22 => "350ml" 
    23 => "1L" 
    24 => "3.5L" 
name => "Contenance" 
is_color_group => "0" 
attributes_quantity => Array (4) 
    21 => 500 
    22 => 500 
    23 => 1 
    24 => 500 
default => 21 

У вас есть идея?

ответ

1

Использование uksort:

uksort($your_array['attributes'], 'my_sort_func'); 
uksort($your_array['attributes_quantity'], 'my_sort_func'); 

function my_sort_func($a, $b) 
{ 
    if($a == $b) 
     return 0; 

    return ($a < $b) ? -1 : 1; 
} 

Как отмечалось zerkms, там нет необходимости использовать uksort как вам нужно только базовое числовое сравнение. Это достигается с помощью просто ksort():

ksort($your_array['attributes']); 
ksort($your_array['attributes_quantity']); 

Используйте uksort(), когда ключи не могут быть отсортированы по своим числовым значением. Например, строки.

+0

никакой необходимости в пользовательской функции. – zerkms

+0

Вы правы, достаточно ksort. –

+0

Спасибо, сейчас лучше! – bahamut100

0
ksort($arr['attributes']); 
ksort($arr['attributes_quantity']); 
0

ksort() будет сортировать по ключевому слову, поддерживая ключ => соотношение стоимости. Вы хотите отсортировать субмассивы в многомерном массиве, а не весь массив. См. Код ниже.

http://www.php.net/manual/en/function.ksort.php

ksort($array['attributes']); 
ksort($array['attributes_quantity']); 
+0

спасибо за объяснения – bahamut100

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