2010-08-06 65 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 2010-08-06 14:30:53

+0

你說得對,ksort就夠了。 – 2010-08-06 14:36:06

+0

謝謝,現在好多了! – bahamut100 2010-08-09 07:24:58

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

ksort()將按鍵排序,保持key => value的關係。你想排序多維數組中的子數組,而不是整個數組。請參閱下面的代碼。

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

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

感謝您的解釋 – bahamut100 2010-08-09 07:25:42