2 回答

TA貢獻1802條經驗 獲得超5個贊
您當然需要將數組編碼為 JSON,以便 JavaScript 客戶端可以使用它。
正如您所提到的,您的數組中有特定類的實例,因此簡單的 JSON 編碼肯定無法正常工作。
這里,PHP自帶了JsonSerializable
接口。您必須在您的類上實現此接口。讓我們舉個Foo
例子:
class Foo implements JsonSerializable
{
? private $thing;
? public function __construct($thing)
? {
? ? $this->thing = $thing;
? }
? public function jsonSerialize()
? {
? ? return [
? ? ? 'thing' => $this->thing,
? ? ];
? }
}?
這是上述代碼片段的示例。如您所見,現在您可以創建 的實例Foo,將其嵌入到數組或其他內容中,并使用您自己的表示形式對其進行 JSON 編碼:
$foo = new Foo('something');
echo json_encode(['foo' => $foo]);
// {"foo": {"thing": "something"}}
將其輸出到內聯 JavaScript 塊中的工作方式與您編寫的類似:
<script type="application/javascript">
const obj = "<?php echo json_encode(($_SESSION['objArray'])) ?>;";
</script>

TA貢獻1909條經驗 獲得超7個贊
將 php 數組存儲到 javascript 變量中,
示例值:( 內部示例數組$_SESSION['objArray'])
$_SESSION['objArray'] = array(
'name' => 'foo',
'email' => '[email protected]',
'age' => 30
);
將對象轉換為數組:(可選)(如果里面有對象值$_SESSION['objArray'])
$_SESSION['objArray'] = json_decode(json_encode($_SESSION['objArray']), true);
解決方案:( 分配給javascript變量objArray)
<script>
const objArray = "<?php echo json_encode($_SESSION['objArray']); ?>";
console.log(objArray);
</script>
控制臺輸出:
{"name":"foo","email":"[email protected]","age":30}
說明: json_encode函數會將數組轉換為json字符串,JavaScript 會將其視為字符串,并且在賦值時需要用引號將其'或覆蓋"。
希望這有幫助。
- 2 回答
- 0 關注
- 183 瀏覽
添加回答
舉報