簡體   English   中英

如何使用 PHP foreach 生成 javascript object 數組用作插件變量?

[英]How to use PHP foreach to generate javascript object array for use as plugin variable?

在過去的幾個小時里,我瀏覽了 Stackoverflow,沒有一個類似的問題能回答我正在尋找的問題。 有一個,但是選擇的答案是我沒有嘗試過的。

Javascript 與 PHP Foreach

我需要從數據庫動態創建一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM