问题如下: 我正在遍历一些包含带有foreach循环的工作站预留数据的数据。 在此循环中,我正在创建一个如下所示的关联数组:
$test = [
"id" => $id,
"name" => $forename." ".$surname,
"startDate" => date("Y-m-d", strtotime($startDate)-86400),
"endDate" => date("Y-m-d", strtotime($endDate)),
"color" => $color,
];
然后应将此数组插入数字数组(也可以是关联数组,但数字会更容易)。 我尝试了array_merge,但似乎它试图将键及其值插入目标数组。这就带来了一个问题,因为密钥在每次迭代期间总是相同的。因此,在每次迭代期间,旧键和值都将被覆盖。此外,无论如何我绝对需要这些数组来保留数组,这将使我的生活更加轻松。
我尝试了array_push,但是这似乎不起作用,我得到了NULL响应。 然后我尝试了array_merge_recursively,在这里数据至少被保留了,但是它被拆分成由前一个关联键索引的数字数组,并用数字键引用内部的数据。这也不是期望的结果。
那么我该如何获得这个结果:
$numericalArray = [[associativeArray1], [associativeArray2], [associativeArray3]]; //and so on
要进一步了解我的方法及其所引起的问题,以下是包含foreach循环的函数。注释的代码包含我已经尝试但没有成功的方法:
function createCalendarMarkupWithoutActiveDauerreservierung($connection, $allReservierungenData){
$calendarData = [];
//$calendarData = ["1"];
foreach($allReservierungenData as $reservierungData){
$color = setColorForDaterange($reservierungData['status']);
$username = retrieveReservierungUser($connection, $reservierungData["benutzer"]);
//$calendarData .= finalizeMarkupWithoutActiveDauerreservierung($reservierungData["id"], $username["vorname"], $username["name"], $reservierungData["anfang"], $reservierungData["ende"], $color);
$calendarDataSegment = finalizeMarkupWithoutActiveDauerreservierung($reservierungData["id"], $username["vorname"], $username["name"], $reservierungData["anfang"], $reservierungData["ende"], $color);
//$calendarData = array_merge($calendarData, ["2"]);
//$calendarData = array_merge($calendarData, $calendarDataSegment);
//$calendarData = array_push($calendarData, $calendarDataSegment);
//$calendarData = $calendarData + $calendarDataSegment;//array_merge($calendarData, $calendarDataSegment);
$calendarData = array_merge_recursive($calendarData, $calendarDataSegment);
}
return $calendarData;
}
答案 0 :(得分:1)
只需将每个数组附加到结果中即可:
<?php
$one = [
'id' => 'one',
'num' => 1
];
$result[] = $one;
$two = [
'id' => 'two',
'num' => 2
];
$result[] = $two;
var_export($result);
输出:
array (
0 =>
array (
'id' => 'one',
'num' => 1,
),
1 =>
array (
'id' => 'two',
'num' => 2,
),
)
答案 1 :(得分:0)
如果我对你的理解正确,你会想要这样的东西吗?
<?php
// example code
function createCalendarMarkupWithoutActiveDauerreservierung($connection, $allReservierungenData){
$calendarData = [];
foreach($allReservierungenData as $reservierungData){
$calendarDataSegment = finalizeMarkupWithoutActiveDauerreservierung($reservierungData["id"], $username["vorname"], $username["name"], $reservierungData["anfang"], $reservierungData["ende"], $color);
$calendarData = $calendarData[$reservierungData["id"]] = $calendarDataSegment);
}
return $calendarData;
}