Lets say you have an array of days and openinghours for a shop like this:
Array
(
[monday] => Array
(
[day] => Monday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[tuesday] => Array
(
[day] => Tuesday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[wednesday] => Array
(
[day] => Wednesday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[thursday] => Array
(
[day] => Thursday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[friday] => Array
(
[day] => Friday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[saturday] => Array
(
[day] => Saturday
[isopen] => false
[open] => 11:00
[close] => 14:00
)
[sunday] => Array
(
[day] => Sunday
[isopen] => false
[open] => 01:00
[close] => 01:00
)
)
now, i want to sort these babies like this:
monday - friday: 10:00-17:00
saturday-sunday: closed
lest say wednesday was closing 16:00 i would like this output:
monday-tuesday: 10:00-17:00
wednesday: 10:00-16:00
thursday-friday: 10:00-17:00
saturday-sunday: closed
That is, I want to sort them but still keep the order from top to bottom as the primary sorting. So, how would you do it? Loop them all and keep hours in memory and compare days is one option but is'nt there any nicer solution?
EDIT: An actual array was requested, here it is:
$days = array(
'monday' => array(
'day' => 'Monday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'tuesday' => array(
'day' => 'Tuesday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'wednesday' => array(
'day' => 'Wednesday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'thursday' => array(
'day' => 'Thursday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'friday' => array(
'day' => 'Friday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'saturday' => array(
'day' => 'Saturday',
'isopen' => false,
'open' => '10:00', //Not used since isopen = false
'close' => '17:00', //Not used since isopen = false
),
'sunday' => array(
'day' => 'Sunday',
'isopen' => false,
'open' => '10:00', //Not used since isopen = false
'close' => '17:00', //Not used since isopen = false
)
);