首页 > 解决方案 > PHP如何将关联数组(不是它的值)推送到另一个数组?

问题描述

问题如下:我正在迭代一些包含带有 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;
}

标签: phparrays

解决方案


只需将每个数组附加到您的结果中:

<?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,
    ),
)

推荐阅读