简单的日期明智的排序数组不工作 [英] simple date wise sorting array not working

查看:122
本文介绍了简单的日期明智的排序数组不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面这是我的数组(这个数组为例)

 阵列(
        [0] =>排列
            (
                [AMT] => 50.00
                [TRANSACTION_DATE] => 2015年1月1日
            )
        [1] =>排列
            (
                [AMT] => 0.00
                [TRANSACTION_DATE] => 2015年2月1日
            )        [2] =>排列
            (
                [AMT] => 60.00
                [TRANSACTION_DATE] => 2015年1月1日
            )
    )

我试图进行排序或根据date.transaction日期应该是分组到阵列指交易的array.I没有重复的条目想这阵也应该排序的date.Means 2015年1月1日首先应和2015年2月1日旁2015年1月1日等等,如果日期是可用的。

我想新的数组如下:

 阵列(
            [0] =>排列
                (
                    [AMT] => 110.00
                    [TRANSACTION_DATE] => 2015年1月1日
                )            [1] =>排列
                (
                    [AMT] => 0.00
                    [TRANSACTION_DATE] => 2015年2月1日
                )        )

2015年1月1日这一天出现在阵2次加应每2重复量不同量。量应为110

我曾尝试

  $结果=阵列();
的foreach($输出$关键=> $值){
    $哈希= $值['TRANSACTION_DATE'];
    如果(使用isset($结果[$哈希])){
        $结果[$哈希] ['AMT'] + = $值['AMT'];
        $结果[$哈希] ['TRANSACTION_DATE'] = $值['TRANSACTION_DATE'];
    }其他{
        $结果[$哈希] ['AMT'] = $值['AMT'];
        $结果[$哈希] ['TRANSACTION_DATE'] = $值['TRANSACTION_DATE'];
    }
}
的print_r(array_values​​($结果));

这是我的实际JSON EN codeD结果

<$p$p><$c$c>{\"2015-07-18\":{\"amt\":50,\"transaction_date\":\"2015-07-18\"},\"2015-05-28\":{\"amt\":\"450.00\",\"transaction_date\":\"2015-05-28\"},\"2015-06-02\":{\"amt\":\"200.00\",\"transaction_date\":\"2015-06-02\"},\"2015-06-18\":{\"amt\":\"12610.00\",\"transaction_date\":\"2015-06-18\"},\"2015-06-23\":{\"amt\":\"0.00\",\"transaction_date\":\"2015-06-23\"},\"2015-06-24\":{\"amt\":\"603.00\",\"transaction_date\":\"2015-06-24\"},\"2015-07-14\":{\"amt\":\"0.00\",\"transaction_date\":\"2015-07-14\"},\"2015-07-16\":{\"amt\":\"0.00\",\"transaction_date\":\"2015-07-16\"},\"2015-07-17\":{\"amt\":\"0.00\",\"transaction_date\":\"2015-07-17\"}}

您可以在以下链接查看此arrray
http://jsonviewer.stack.hu/


解决方案

尝试简单地用 usort

  $结果=阵列();
的foreach($输出$关键=&GT; $值){
    $哈希= $值['TRANSACTION_DATE'];
    如果(使用isset($结果[$哈希])){
        $结果[$哈希] ['AMT'] + = $值['AMT'];
        $结果[$哈希] ['TRANSACTION_DATE'] = $值['TRANSACTION_DATE'];
    }其他{
        $结果[$哈希] ['AMT'] = $值['AMT'];
        $结果[$哈希] ['TRANSACTION_DATE'] = $值['TRANSACTION_DATE'];
    }
}uasort(array_values​​($结果),功能($ A,$ B){
     返回$ a ['TRANSACTION_DATE'] - $ B ['TRANSACTION_DATE'];
});
的print_r(array_values​​($结果));

<大骨节病> 演示

Here this is my array.(This array is for example)

Array(
        [0] => Array
            (
                [amt] => 50.00
                [transaction_date] => 2015-01-01
            )  
        [1] => Array
            (
                [amt] => 0.00
                [transaction_date] => 2015-02-01
            )

        [2] => Array
            (
                [amt] => 60.00
                [transaction_date] => 2015-01-01
            )
    )

I am trying to sort or grouping to array according to date.transaction date should be one means no duplicate entry of transaction in array.I want this array should also sort by the date.Means 2015-01-01 should at first and 2015-02-01 next to 2015-01-01 and so on if dates are available.

I want new array as follows

Array(
            [0] => Array
                (
                    [amt] => 110.00
                    [transaction_date] => 2015-01-01
                )

            [1] => Array
                (
                    [amt] => 0.00
                    [transaction_date] => 2015-02-01
                )            

        )

2015-01-01 this date appears 2 times in array with 2 different amount amount should added as per repetition. amount should be 110

I have tried

$result = array();
foreach ($output as $key => $value) {
    $hash = $value['transaction_date'];
    if (isset($result[$hash])) {
        $result[$hash]['amt'] += $value['amt'];
        $result[$hash]['transaction_date'] = $value['transaction_date'];
    } else {
        $result[$hash]['amt'] = $value['amt'];
        $result[$hash]['transaction_date'] = $value['transaction_date'];
    }
}
print_r(array_values($result));

this is my actual json encoded result

{"2015-07-18":{"amt":50,"transaction_date":"2015-07-18"},"2015-05-28":{"amt":"450.00","transaction_date":"2015-05-28"},"2015-06-02":{"amt":"200.00","transaction_date":"2015-06-02"},"2015-06-18":{"amt":"12610.00","transaction_date":"2015-06-18"},"2015-06-23":{"amt":"0.00","transaction_date":"2015-06-23"},"2015-06-24":{"amt":"603.00","transaction_date":"2015-06-24"},"2015-07-14":{"amt":"0.00","transaction_date":"2015-07-14"},"2015-07-16":{"amt":"0.00","transaction_date":"2015-07-16"},"2015-07-17":{"amt":"0.00","transaction_date":"2015-07-17"}} 

you can check this arrray in this link http://jsonviewer.stack.hu/

解决方案

Try simply using usort as

$result = array();
foreach ($output as $key => $value) {
    $hash = $value['transaction_date'];
    if (isset($result[$hash])) {
        $result[$hash]['amt'] += $value['amt'];
        $result[$hash]['transaction_date'] = $value['transaction_date'];
    } else {
        $result[$hash]['amt'] = $value['amt'];
        $result[$hash]['transaction_date'] = $value['transaction_date'];
    }
}

uasort(array_values($result),function($a,$b){
     return $a['transaction_date'] - $b['transaction_date'];
});
print_r(array_values($result));

Demo

这篇关于简单的日期明智的排序数组不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆