Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以日期为键按时间顺序对数组排序-php_Php_Arrays_Sorting - Fatal编程技术网

以日期为键按时间顺序对数组排序-php

以日期为键按时间顺序对数组排序-php,php,arrays,sorting,Php,Arrays,Sorting,我基本上有以下代码,用于确定数组中相同日期的数量: function get_archives_html ($blog) { //tag array to store arrays with same tag $count_tags = array(); //store output $output = ''; foreach($blog as $id) { //abbreviate date name $origin

我基本上有以下代码,用于确定数组中相同日期的数量:

function get_archives_html ($blog) {
    //tag array to store arrays with same tag
    $count_tags = array();


    //store output
    $output = '';

    foreach($blog as $id) {
        //abbreviate date name
        $originalDate = $id["date"]["year"].'-'.$id["date"]["month"].'-'.$id["date"]["day"];
        $abbrevDate = date("F, Y", strtotime($originalDate));

        if(!isset($count_tags[$abbrevDate])) {
            $count_tags[$abbrevDate] = 0;
        }

        ++$count_tags[$abbrevDate];
    }

    // Sort your tags from hi to low
    //arsort($count_tags);
    var_dump($count_tags);




    foreach($count_tags as $month=>$id) {
        $output.= '<p><a href="#">'. $month.($id > 1 ? ' ('.$id .')' : '').'</a></p>';
    }

    return $output;
}
现在,我使用这些键在html上显示它。问题是它并没有按日期正确排列,而是按字母排列


所以,我的问题是,如何按键和日期对数组进行排序。例如,2016年10月、2016年11月、2017年9月、2014年10月谢谢你

你大概希望按时间顺序(即10月16日、11月16日、9月17日、10月17日)进行?这个数组从何而来?您的问题并没有明确说明您的期望。排序键是
ksort
为什么不可以?您可能希望查看
uksort()
以使用数组的键定义自定义排序函数。还要注意的是,如果您有两次相同的日期,那么将日期作为键可能不是一个好主意。@Chris这是正确的。它来自一个基本的多维数组。我把全部密码都贴了出来above@Simon嗨,它不起作用,因为我需要像chris states那样按时间顺序排列。请参考以上代码。谢谢
<?php
$arr = array(
        "November, 2016" => "2",
        "October, 2016" => "5",
        "October, 2017" => "3",
        "September, 2017" => "6" 
);

//Sort by ascending date in the key
uksort($arr,function($a,$b){
  return strtotime(strtr($a,',',' '))<=>strtotime(strtr($b,',',' '));
});

//result
$expected = array (
  'October, 2016' => "5",
  'November, 2016' => "2",
  'September, 2017' => "6",
  'October, 2017' => "3",
);

var_dump($arr === $expected);  //bool(true)
<?php
$arr = array(
        "November, 2016" => "2",
        "October, 2016" => "5",
        "October, 2017" => "3",
        "September, 2017" => "6" 
);

//Sort by ascending date in the key
uksort($arr,function($a,$b){
  return strtotime(strtr($a,',',' '))<=>strtotime(strtr($b,',',' '));
});

//result
$expected = array (
  'October, 2016' => "5",
  'November, 2016' => "2",
  'September, 2017' => "6",
  'October, 2017' => "3",
);

var_dump($arr === $expected);  //bool(true)