这是排序之前的"月"数组:
array(3) { [2011]=> array(3) { [12]=> string(2) "12" ["04"]=> string(2) "04" ["01"]=> string(2) "01" } [2013]=> array(1) { [10]=> string(2) "10" } [2010]=> array(1) { ["05"]=> string(2) "05" } }
这是分类后的"月"阵列:
array(3) { [2011]=> array(3) { [12]=> string(2) "12" ["04"]=> string(2) "04" ["01"]=> string(2) "01" } [2010]=> array(1) { ["05"]=> string(2) "05" } [2013]=> array(1) { [10]=> string(2) "10" } }
这是我的代码:
var_dump($months);
foreach($months as $year => $month_array)
{
arsort($months[$year]);
}
arsort($days);
arsort($months);
arsort($years);
var_dump($months);
我希望它能以相反的顺序生产(2013,2011,2010)
使用ksort按键对数组进行排序。
$a = array(
2001 => '2001',
2004 => '2004',
2009 => '2009',
);
ksort($a);
print_r($a);
output:
Array ( [2001] => 2001 [2004] => 2004 [2009] => 2009 )
使用Krsort进行反向顺序(这是您需要的)。
$a = array(
2001 => '2001',
2004 => '2004',
2009 => '2009',
);
krsort($a);
print_r($a);
output:
Array ( [2009] => 2009 [2004] => 2004 [2001] => 2001 )
我认为您在错误的地方使用Arsort,应该在foreach
arsort($months);
foreach($months as $key => $value)
{
echo $key . '=>' .$value;
}
您应该按desc和键对数组进行排序。使用
krsort($array);
并开始使用php.net搜索。避免浪费时间
要以相反的顺序获取年份,您应该将数组键(在您的情况下)将其放在单独的数组中,最后将它们倒出:
$years = array_keys( $months ); // => array( 2011, 2010, 2013 )
rsort( $years );
var_dump( $years ); // => array( 2013, 2011, 2010 )
如果您希望整个数组被数年整理,请尝试 krsort :
krsort( $months );
var_dump( $months ); // => array( 2013 => array( ... ), 2011 => array( ... ), 2010 => array( ... ) );
也请参见:
http://nl3.php.net/manual/en/function.rsort.php
http://nl3.php.net/manual/en/function.krsort.php