【问题标题】:Adding array elements with a for(reach) loop使用 for(reach) 循环添加数组元素
【发布时间】:2018-01-27 03:25:06
【问题描述】:

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

我正在编写一个返回计划等内容的 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"
      },
      ...
      ]
  },
  ...

有一个标准块"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 数组。

【问题讨论】:

  • 你能说得清楚一点吗?
  • @KubiRoazhon 明确了最终结果应该是什么。
  • Division 是一个包含 ids 的数组?
  • $Divisions 是一个所有 id 为 yes 的数组。

标签: php arrays json for-loop dynamic


【解决方案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];
  }
}
?>

【讨论】:

  • 哦,当然。谢谢你。现在我只需要弄清楚如何获得正确的值!
猜你喜欢
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 2019-04-02
  • 2019-11-05
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2013-11-16
相关资源
最近更新 更多