首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for(reach)循环添加数组元素

使用for(reach)循环添加数组元素
EN

Stack Overflow用户
提问于 2017-08-18 20:29:40
回答 1查看 51关注 0票数 1

(首先,在底部有一点/很多上下文是问题)

我正在写一个API,在其他事情中返回一个规划。响应格式为JSON,格式如下:

代码语言:javascript
复制
"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"的块被添加到响应中。

我的问题是,部门的数量或名称并不是一成不变的。根据部署的不同,可能会有或多或少的变化。为了掩饰这一点,我编写了以下代码:

代码语言:javascript
复制
<?php
    ...
    $stmt = $conn->prepare("SELECT `idDivision` FROM Division;");
    $stmt->execute();
    $stmt->bind_result($idDivision);
    while($stmt->fetch()){
        $Divisions[] = $idDivision;
        $$idDivision = array();
    }
    ...
?>

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

然后,我从DB获取规划数据,并将其存储在稍后将用于响应构建的多个数组中:

代码语言:javascript
复制
<?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.
}
?>

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

代码语言:javascript
复制
<?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,这样它就变成了:

代码语言:javascript
复制
<?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数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-18 21:03:33

试试这个。

代码语言:javascript
复制
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];
  }
}
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45756686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档