I am trying to create a array from this input:
JavaScript
x
Array (
[0] => stdClass Object (
[id] => 85
[time] => 2020-07-18 13:34:59
[user] => 32
[status] => read
[type] => profile_view
[content] => One has viewed your profile.
)
[1] => stdClass Object (
[id] => 79
[time] => 2020-07-20 12:16:03
[user] => 32
[status] => read
[type] => profile_view
[content] => test buyer has viewed your profile.
)
[2] => stdClass Object (
[id] => 76
[time] => 2020-07-20 12:59:11
[user] => 32
[status] => read
[type] => profile_view_guest
[url] =>
[content] => A guest has viewed your profile.
)
)
to output:
JavaScript
Array (
[0] => Array (
[label] => July 18 2020
[y] => 1
)
[1] => Array (
[label] => July 20 2020
[y] => 1
)
[2] => Array (
[label] => July 20 2020
[y] => 1
)
)
Here [y]
will number of times the date repeats here from the input.
Advertisement
Answer
Please see the below example
JavaScript
<?php
// This is your input array
$input = [ ];
$output = [];
foreach ( $input as $data ) {
$date = DateTime::createFromFormat( 'Y-m-d H:i:s', $data->time );
$formatted = $date->format( 'F j Y' );
// Create empty count
if ( !array_key_exists( $formatted, $output ) ) {
$output[ $formatted ] = [
'label' => $formatted,
'y' => 0
];
}
// Increase count
$output[ $formatted ][ 'y' ]++;
}
// Remove keys
$output = array_values( $output );
print_r( $output );
Output
JavaScript
Array
(
[0] => Array
(
[label] => July 18 2020
[y] => 1
)
[1] => Array
(
[label] => July 20 2020
[y] => 2
)
)
Test here: http://sandbox.onlinephpfunctions.com/code/c6b7be9876828c41235e01b1e7eb6434f65db5f1