【发布时间】:2019-10-10 20:46:40
【问题描述】:
在过去的几个小时里,我浏览了 Stackoverflow,没有一个类似的问题能回答我正在寻找的问题。有一个,但是选择的答案是我没有尝试过的。
我需要从数据库中动态创建一个 JavaScript 变量数组。我生成在我网站的其他区域有用的 JSON 数组没有问题,但是插件 responsiveCalendar 所需的格式需要我无法模仿的独特格式。
我的代码输出这种类型的响应
$(".responsive-calendar").responsiveCalendar({
time: '<?php echo $today; ?>',
events: {
"2014-04-30": {"number": 1, "badgeClass": "badge-warning", "url": "http://w3widgets.com/responsive-calendar"},
"2013-04-26": {"number": 1, "badgeClass": "badge-warning", "url": "http://w3widgets.com"},
"2013-05-03": {"number": 1, "badgeClass": "badge-error"},
"2013-06-12": {}}
});
我使用的脚本如下
$sql = $conn->prepare('SELECT date,total,url,status FROM SQLTABLE ORDER BY date DESC');
$sql->execute();
$json = [];
$events = $sql->fetchAll(PDO::FETCH_ASSOC);
foreach ($events as $e) {
$json[] = array(
date("Y-m-d", strtotime($e[date])) => array(
'number'=> $e[number],
'url'=> $e[url],
'status'=> ($e[status] == 1 ? true : false)
));
}
$events = json_encode($json, JSON_UNESCAPED_SLASHES);
echo $events;
$conn->close();
这是我得到的结果
[{
"2017-09-05": {
"number": 10,
"url": "http",
"active": true
}
}, {
"2017-09-05": {
"number": 7,
"url": "http",
"active": false
}
},
...
{
"2017-09-05": {
"number": 15,
"url": "http",
"active": false
}
}, {
"2017-09-05": {
"number": 1,
"url": "http",
"active": false
}
}]
我正在尝试完成这个(如下),然后将其分配给插件中称为事件的对象变量。我确实尝试过使用方括号,例如一些 Ajax 数据传递是如何进行的,但这破坏了它,所以不确定这里有什么语法规则。
{
"2017-09-05": {
"number": 10,
"url": "http",
"active": true
},
"2017-09-05": {
"number": 7,
"url": "http",
"active": false
},
...
"2017-09-05": {
"number": 15,
"url": "http",
"active": false
},
"2017-09-05": {
"number": 1,
"url": "http",
"active": false
}
}
所以总结一下,我不需要方括号,并注意每个事件的第一部分是独立的,没有任何标识符,例如数字、url、状态等。它只是日期字段。在我的业余理解中,日期字段作为我相信子数组的索引值。
提前感谢您,非常感谢 StackOverflow 社区!
【问题讨论】:
标签: javascript php arrays foreach javascript-objects