asked on # PHP Array Grouping of Values

I have an array like this...

$array = array();

$array['2017-03-15']['rate']=125;

$array['2017-03-16']['rate']=125;

$array['2017-03-17']['rate']=130;

$array['2017-03-18']['rate']=130;

$array['2017-03-19']['rate']=125;

$array['2017-03-20']['rate']=125;

$array['2017-03-21']['rate']=115;

I need the output to be like.

"2 days @ 125

2 days @ 130

2 day at $125

1 Day at $115"

in the order of the days.

So, if there's X consecutive days at a specific amount, it just needs to group those together as a single line reflecting that - in date order.

How would I go about pulling that off?

$array = array();

$array['2017-03-15']['rate

$array['2017-03-16']['rate

$array['2017-03-17']['rate

$array['2017-03-18']['rate

$array['2017-03-19']['rate

$array['2017-03-20']['rate

$array['2017-03-21']['rate

I need the output to be like.

"2 days @ 125

2 days @ 130

2 day at $125

1 Day at $115"

in the order of the days.

So, if there's X consecutive days at a specific amount, it just needs to group those together as a single line reflecting that - in date order.

How would I go about pulling that off?

PHP

View this solution by signing up for a free trial.

Members can start a 7-Day free trial and enjoy unlimited access to the platform.

Sorry, I was missing a line. After the foreach loop through $array, you might still have some data at the end that needs to be added to the $rate_log array, so just check and add it after the loop ends:

if($current_rate_count > 0) { $rate_log[] = array($current_rate_count,$current_rate); }

if($current_rate_count > 0) { $rate_log[] = array($current_rate_count,

Thanks! I found that after also :)

Thank you!

Thank you!

Here's my code -

Open in new window

which outputs:

2 day at $125

3 day at $130

-- for some reason it's omitting the 135 value...or anything that comes after 130.