将 php 数组编码为键控 JSON 数组以用于 javascript?
Encode php array to keyed JSON array for use in javascript?
我需要创建一个键控 JSON 数组以将通过 PHP 查询的一组图像传递给 vegas background slideshow,它希望图像像这样位于数组中:
$("#example, body").vegas({
slides: [
{ src: "/img/slide1.jpg" },
{ src: "/img/slide2.jpg" },
{ src: "/img/slide3.jpg" },
{ src: "/img/slide4.jpg" }
]
});
我已经尝试在 PHP 中将其手动构建为字符串,将其设置为 DOM 对象的数据属性并像这样获取它:
<div id="example" data-slides="[{ src: "1.jpg" }, {src: "2.jpg" }]"></div>
然后:
slides: $('#example').data('slides');
这是行不通的,因为我想它接收的是一个字符串,而不是一个数组。
我试过在 [src=>"1.jpg", src=>2.jpg"]
等数组上使用 json_encode
,但无法获得正确的格式,例如:{ src: "img.jpg" }
。我不断获取数组中的整个字符串:
["src=>\"1.jpg\"]
不确定是什么问题...
$images = array("slides" => array()); // { slides: [] }
array_push($images["slides"], array("src" => "/img/slide1.jpg")); // { slides: [ { "src": "/img/slide1.jpg" } ] }
array_push($images["slides"], array("src" => "/img/slide2.jpg"));
array_push($images["slides"], array("src" => "/img/slide3.jpg"));
array_push($images["slides"], array("src" => "/img/slide4.jpg"));
echo json_encode($images);
您应该像这样在 PHP 中构建数组:
$slides = array(
array("src" => "/img/slide1.jpg"),
array("src" => "/img/slide2.jpg"),
array("src" => "/img/slide3.jpg"),
array("src" => "/img/slide4.jpg")
);
echo json_encode($slides);
将输出:
[{"src":"/img/slide1.jpg"},{"src":"/img/slide2.jpg"},{"src":"/img/slide3.jpg"},{"src":"/img/slide4.jpg"}]
您确实可以将图像 JSON 字符串设置为数据(不要忘记对其进行 HTML 编码):
<div id="example" data-slides="<?php
echo htmlspecialchars(json_encode($slides));
?>"></div>
如果你这样做 $('#example').data('slides');
它会给你一个对象数组,因为 jQuery 已经将它识别为 JSON 并将解析它。
我需要创建一个键控 JSON 数组以将通过 PHP 查询的一组图像传递给 vegas background slideshow,它希望图像像这样位于数组中:
$("#example, body").vegas({
slides: [
{ src: "/img/slide1.jpg" },
{ src: "/img/slide2.jpg" },
{ src: "/img/slide3.jpg" },
{ src: "/img/slide4.jpg" }
]
});
我已经尝试在 PHP 中将其手动构建为字符串,将其设置为 DOM 对象的数据属性并像这样获取它:
<div id="example" data-slides="[{ src: "1.jpg" }, {src: "2.jpg" }]"></div>
然后:
slides: $('#example').data('slides');
这是行不通的,因为我想它接收的是一个字符串,而不是一个数组。
我试过在 [src=>"1.jpg", src=>2.jpg"]
等数组上使用 json_encode
,但无法获得正确的格式,例如:{ src: "img.jpg" }
。我不断获取数组中的整个字符串:
["src=>\"1.jpg\"]
不确定是什么问题...
$images = array("slides" => array()); // { slides: [] }
array_push($images["slides"], array("src" => "/img/slide1.jpg")); // { slides: [ { "src": "/img/slide1.jpg" } ] }
array_push($images["slides"], array("src" => "/img/slide2.jpg"));
array_push($images["slides"], array("src" => "/img/slide3.jpg"));
array_push($images["slides"], array("src" => "/img/slide4.jpg"));
echo json_encode($images);
您应该像这样在 PHP 中构建数组:
$slides = array(
array("src" => "/img/slide1.jpg"),
array("src" => "/img/slide2.jpg"),
array("src" => "/img/slide3.jpg"),
array("src" => "/img/slide4.jpg")
);
echo json_encode($slides);
将输出:
[{"src":"/img/slide1.jpg"},{"src":"/img/slide2.jpg"},{"src":"/img/slide3.jpg"},{"src":"/img/slide4.jpg"}]
您确实可以将图像 JSON 字符串设置为数据(不要忘记对其进行 HTML 编码):
<div id="example" data-slides="<?php
echo htmlspecialchars(json_encode($slides));
?>"></div>
如果你这样做 $('#example').data('slides');
它会给你一个对象数组,因为 jQuery 已经将它识别为 JSON 并将解析它。