0

hello everyone

        [{
                "uid": "BR-M12068",
                "registeredDate": "Thursday May 11th 2017  03:56:37 PM",
                "file_path": "BR-M12068.pdf",
                "file_thumbnail_path": "BR-M12068thumb.png",
                "test_type": "Free",
                "title": "Medical Bills",
                "createdAt": "Thursday June 29th 2017 05:02:19",
                "chkTime": "Thursday June 29th 2017 05:01:53 PM",
                "chkoutTime": "Thursday June 29th 2017  05:02:29 PM"
            },
            {
                "uid": "BR-M12068", /// first data
                "registeredDate": "Thursday May 11th 2017  03:56:37 PM",
                "file_path": "BR-M12068.pdf",
                "file_thumbnail_path": "CEthumb.png",
                "test_type": "not-free",
                "title": "Medical Bills",
                "createdAt": "Sunday June 25th 2017 02:29:38",
                "chkTime": "Sunday June 25th 2017 02:28:22 PM",
                "chkoutTime": "Sunday June 25th 2017  02:30:07 PM"
            },
            {
                "uid": "BR-M12068", //second data
                "registeredDate": "Thursday May 11th 2017  03:56:37 PM",
                "file_path": "BR-M12068.pdf",
                "file_thumbnail_path": "BRthumb.png",
                "test_type": "Free",
                "title": "Medical Bills",
                "createdAt": "Sunday June 25th 2017 02:29:13",
                "chkTime": "Sunday June 25th 2017 02:28:22 PM",
                "chkoutTime": "Sunday June 25th 2017  02:30:07 PM"
            }
        ]

    i have json data like above as we can see createdAt is same for two Sunday June 25th 2017 02:29:13  

    now i am trying two merge common date in associative array,but there is no success please help 

    i want out like this 

    date-1 [
            "uid": "BR-M12068",
                        "registeredDate": "Thursday May 11th 2017  03:56:37 PM",
                        "file_path": "BR-M12068.pdf",
                        "file_thumbnail_path": "BR-M12068thumb.png",
                        "test_type": "Free",
                        "title": "Medical Bills",
                        "createdAt": "Thursday June 29th 2017 05:02:19",
                        "chkTime": "Thursday June 29th 2017 05:01:53 PM",
                        "chkoutTime": "Thursday June 29th 2017  05:02:29 PM"

    ]

    date -2[which is same] [

                                [0] -----> first data

                                [1] ----->second data 

    ]
2
Contributors
6
Replies
44
Views
1 Year
Discussion Span
Last Post by KaleBeatroot
2

That date format is yucky. I'd json_decode it as an associative array then loop through creating keys from the date but only after changing the format to Y-m-d via Datetime obj. You then add the rest of the array as an element of that key. If I have time I'll post an example. You may be able to use array functions too, but these tend to be slower even though they're more succinct.

0

You do realise that this:

i have json data like above as we can see createdAt is same for two Sunday June 25th 2017 02:29:13

isn't true. Your createdAt times are all unique - which you would expect if they are all created individually.

"createdAt": "Sunday June 25th 2017 02:29:38", //second record
"createdAt": "Sunday June 25th 2017 02:29:13", //third record
1

This function will group output:

function jsonToDateKeyArray( $json, $dateKey, $keyFormat='YmdHis' )
{
    $array = json_decode($json, true);
    $container = [];
    foreach($array as $r){
        $dt = new DateTime($r[$dateKey]);
        $key = $dt->format($keyFormat);
        $container[$key][] = $r;
    }
    return $container;
}

echo "<pre>";
print_r(jsonToDateKeyArray($json, 'createdAt'));

However all your createdAtfields are unique, so they will show as three elements for the json you displayed, not the two you are expecting.

1

So, did it work?

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.