![](/img/trans.png)
[英]How to use foreach loop in an array object variable using javascript
[英]How to use PHP foreach to generate javascript object array for use as plugin variable?
在過去的幾個小時里,我瀏覽了 Stackoverflow,沒有一個類似的問題能回答我正在尋找的問題。 有一個,但是選擇的答案是我沒有嘗試過的。
我需要從數據庫動態創建一個 JavaScript 變量數組。 我生成 JSON arrays 沒有問題,這在我網站的其他區域很有用,但是插件 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
}
}]
我正在嘗試完成此操作(如下),然后將其分配給名為 events 的插件中的 object 變量。 我確實嘗試過使用方括號,例如如何制作一些 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 社區!
由於您的最終結構不應該是索引數組,而應該是關聯的(JS 中的 object),因此不要使用$json[] =
,而是使用$json[date] =
。
所以替換:
$json[] = array(
date("Y-m-d", strtotime($e[date])) => array(
'number'=> $e[number],
'url'=> $e[url],
'status'=> ($e[status] == 1 ? true : false)
));
... 和:
$json[date("Y-m-d", strtotime($e[date]))] = array(
'number'=> $e[number],
'url'=> $e[url],
'status'=> ($e[status] == 1 ? true : false)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.