如何排序这个数组?

时间:2010-08-06 14:21:24

标签: php arrays smarty

在过去的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 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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,因为你只需要一个基本的数字比较。这只需使用kso​​rt():

即可实现
ksort( $your_array['attributes'] );
ksort( $your_array['attributes_quantity'] );

当您的密钥无法按其数值排序时,请使用uksort()。例如,字符串。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

ksort()将按键排序,维持密钥=&gt;价值关系。您希望对多维数组中的子数组进行排序,而不是整个数组。请参阅下面的代码。

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

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