我有一个看起来像这样的数组:
Array (
[0] => Array
(
[id] => 1
[day] => 12
[month] => 10
[year] => 2014
[event_title] => numbwe1
[event] => trip to this place unknown
)
[1] => Array
(
[id] => 2
[day] => 16
[month] => 10
[year] => 2014
[event_title] => number2
[event] => trip to this other place unknown
)
)
我希望它看起来像这样
Array (
[2014] => Array (
[10] => Array (
[1] => Array(
[0] => Array(
[event_title] = numbwe1
[event] = trip to this place unknown
)
)
[2] => Array(
[0] => Array(
[event_title] = number2
[event] = trip to this other place unknown
)
)
)
)
)
我不知道是因为晚了,还是很复杂,但我无法理解它。任何人都有任何想法。
目的是我希望能够根据年份=>月=>日期=>选择所有事件
例如。$events[2014]给出了今年的所有活动。
$events[2014][11] 给出了本月的所有事件。
$events[2014][11][13]给出了这一天的所有事件。
替代解决方案也受到欢迎。
$newArray = array();
foreach ($array as $a) {
$year = $a['year'];
$month = $a['month'];
$day = $a['day'];
if (!isset($newArray[$year])) $newArray[$year] = array();
if (!isset($newArray[$year][$month])) $newArray[$year][$month] = array();
if (!isset($newArray[$year][$month][$day])) $newArray[$year][$month][$day] = array();
$newArray[$year][$month][$day][] = $a; // No sense stripping out useful information
}
这可能应该有效。警告:未经测试
function createDateSortableArray($array) {
$sortableArray = [];
foreach ($array as entry) {
$year = $entry['year'];
$month = $entry['month'];
$daty = $entry['day'];
if (!isset($sortableArray[$year])) {
$sorableArray[$year] = [];
}
if (!isset($sortableArray[$year][$month])) {
$sortableArray[$year][$month] = [];
}
if (!isset($sortableArray[$year][$month][$day]) {
$sortableArray[$year][$month][$day] = [];
}
$sortableArray[$year][$month][$day][] = array(
'event_title' => $entry['event_title'],
'event' => $entry['event']
);
}
return $sortableArray;
}