I have a multidimensional array…it goes like this:
array(112) {
[0]=>
array(4) {
["title"]=>
string(8) "11:00:00"
["day"]=>
string(6) "friday"
["date"]=>
string(10) "2015-12-04"
["time"]=>
string(8) "11:00:00"
}
[1]=>
array(4) {
["title"]=>
string(8) "11:30:00"
["day"]=>
string(6) "friday"
["date"]=>
string(10) "2015-12-04"
["time"]=>
string(8) "11:30:00"
}
[2]=>
array(4) {
["title"]=>
string(8) "12:00:00"
["day"]=>
string(6) "friday"
["date"]=>
string(10) "2015-12-04"
["time"]=>
string(8) "12:00:00"
}
[3]=>
array(4) {
["title"]=>
string(8) "12:30:00"
["day"]=>
string(6) "friday"
["date"]=>
string(10) "2015-12-04"
["time"]=>
string(8) "12:30:00"
}
[4]=>
array(4) {
["title"]=>
string(8) "09:00:00"
["day"]=>
string(6) "monday"
["date"]=>
string(10) "2015-12-07"
["time"]=>
string(8) "09:00:00"
}
…
it lists the weekdays covering an entire month…every day corresponding to a date and for title I have times(I know this is misleading but I cannot explain now the story behind it)
The goal:
For each weekday I want to delete the last array member
Let me explain:
In the example above Friday is mentioned for times 11:00…11:30…12:00…12:30…I just want to delete the array member for 12:30…leaving times 11:00…11:30…12:00.
It has to be a loop…but apart from that I do not know how to proceed…
I’ve made some assumptions about your data so the example below may not work.
$month = [
[
"title" => "11:00:00",
"day" => "friday",
"date" => "2015-12-04",
"time" => "11:00:00"
],
[
"title" => "11:30:00",
"day" => "friday",
"date" => "2015-12-04",
"time" => "11:30:00"
],
[
"title" => "12:00:00",
"day" => "friday",
"date" => "2015-12-04",
"time" => "12:00:00"
],
[
"title" => "12:30:00",
"day" => "friday",
"date" => "2015-12-04",
"time" => "12:30:00"
],
[
"title" => "10:00:00",
"day" => "monday",
"date" => "2015-12-07",
"time" => "10:00:00"
],
[
"title" => "09:00:00",
"day" => "tuesday",
"date" => "2015-12-08",
"time" => "09:00:00"
],
[
"title" => "09:30:00",
"day" => "tuesday",
"date" => "2015-12-08",
"time" => "09:30:00"
],
[
"title" => "09:00:00",
"day" => "friday",
"date" => "2015-12-11",
"time" => "09:00:00"
],
];
$result = array_reduce(
array_reduce($month, function ($carry, $day) {
$carry[$day['date']][] = $day;
return $carry;
}, [])
,
function($carry, $times) {
if (count($times) > 1) {
array_pop($times);
}
$carry = array_merge($carry, $times);
return $carry;
}
,
[]
);
print_r($result);
Array
(
[0] => Array
(
[title] => 11:00:00
[day] => friday
[date] => 2015-12-04
[time] => 11:00:00
)
[1] => Array
(
[title] => 11:30:00
[day] => friday
[date] => 2015-12-04
[time] => 11:30:00
)
[2] => Array
(
[title] => 12:00:00
[day] => friday
[date] => 2015-12-04
[time] => 12:00:00
)
[3] => Array
(
[title] => 10:00:00
[day] => monday
[date] => 2015-12-07
[time] => 10:00:00
)
[4] => Array
(
[title] => 09:00:00
[day] => tuesday
[date] => 2015-12-08
[time] => 09:00:00
)
[5] => Array
(
[title] => 09:00:00
[day] => friday
[date] => 2015-12-11
[time] => 09:00:00
)
)
system
Closed
March 8, 2016, 12:14am
3
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.