【发布时间】: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