Как отсортировать этот массив? - PullRequest
1 голос
/ 06 августа 2010

Последние 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

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

Ответы [ 4 ]

1 голос
/ 06 августа 2010

Использовать 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 (), когда ваши ключи не могут быть отсортированы по его числовому значению.Например, строки.

1 голос
/ 06 августа 2010
0 голосов
/ 06 августа 2010

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

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

ksort($array['attributes']);
ksort($array['attributes_quantity']);
0 голосов
/ 06 августа 2010
ksort($arr['attributes']);
ksort($arr['attributes_quantity']);
...