使用for(到达)循环添加数组元素

时间:2017-08-18 12:29:40

标签: php arrays json for-loop dynamic

(首先是底部的一些/上下文是问题)

我正在编写一个返回其他计划的API。响应采用JSON格式,应如下所示:

"Planning":
  [
  {
    "Name": "Overview",
    "Dates":
      [
      {
        "Date": "yyyy-mm-dd",
        "Division1": "type",
        "Division2": "type"
      },
      {
        "Date": "yyyy-mm-dd",
        "Division1": "type",
        "Division2": "type"
      },
      ...
      ]
  },
  {
    "Name": "Division1",
    "Dates":
      [
      {
        "Date": "yyyy-mm-dd",
        "Type": "type",
        "Description": "type"
      },
      ...
      ]
  },
  ...

总是返回标准blok "Name": "Overview",并且对于请求者所属的每个分区,将"Name":"Divisionname"的块添加到响应中。

我所遇到的问题是这些部门的数量或名称并非一成不变。根据部署情况,可以有更多或更少。 为了解决这个问题,我编写了以下代码:

<?php
    ...
    $stmt = $conn->prepare("SELECT `idDivision` FROM Division;");
    $stmt->execute();
    $stmt->bind_result($idDivision);
    while($stmt->fetch()){
        $Divisions[] = $idDivision;
        $$idDivision = array();
    }
    ...
?>

这应该为每个分区创建一个数组,数组名称是该分区的id(正确吗?)。

然后我从数据库获取计划数据,我将存储在多个数组中,稍后我将用于响应构建:

<?php
$stmt->bind_result($type, $date, $idDivision, $day, $description, $note);
while($stmt->fetch()){
    if(checkarray($date, $arr_date) != true){
        array_push($arr_date, $date);
        array_push($arr_day, $day);
    }
    array_push($$idDivision, $type); //This should push it into the correct array.
}
?>

最后,我想将所有这些结合到课程的响应中(这是我迷失的地方):

<?php
for($i = 0; $i <= count($arr_date); $i++){
    $planning[0]['Dates'][] = array(
        "Date" => $arr_date[$i],
            // How to add every division with "arrayname" => "$type" here?
        );
}
?>

与上面的评论一样,我不知道如何为我动态找到的每个部门添加key:value,以便它变为:

<?php
for($i = 0; $i <= count($arr_date); $i++){
    $planning[0]['Dates'][] = array(
        "Date" => $arr_date[$i],
        "Division1" => $value,
        "Division2" => $value,
        "Division3" => $value,            
        // and so on for every division
        );
}
?>

有没有办法做到这一点,还是我应该以不同的方式做这件事?我觉得我应该/可以使用$Divisions数组。

1 个答案:

答案 0 :(得分:1)

试试这个。     

for($i = 0; $i <= count($arr_date); $i++){
    $planning[0]['Dates'][$i]["Date"] = $arr_date[$i];

     for($j=0;$j<count($division);$j++){
       $planning[0]['Dates'][$i]["division$j"] = $division[$j];
  }
}
?>