Javascript 来自 PHP 多维数组的数组
Javascript Array from PHP Multidimensional Array
我有如下数组
array(
(int) 0 => array(
'Homeslider' => array(
'id' => '1',
'title' => null,
'display_photo' => '1402379775bdaebd329b69.jpg',
'order_no' => null,
'created' => '2014-06-10 05:56:15',
'modified' => '2014-06-10 05:56:15'
)
),
(int) 1 => array(
'Homeslider' => array(
'id' => '2',
'title' => null,
'display_photo' => '1402379784a426fe476711.jpg',
'order_no' => null,
'created' => '2014-06-10 05:56:24',
'modified' => '2014-06-10 05:56:24'
)
),
(int) 2 => array(
'Homeslider' => array(
'id' => '3',
'title' => null,
'display_photo' => '1402379793cb81f1a5bbf9.jpg',
'order_no' => null,
'created' => '2014-06-10 05:56:33',
'modified' => '2014-06-10 05:56:33'
)
)
)
我想要达到的目标
["img/default/slide/bg1.jpg","img/default/slide/bg2.jpg","img/default/slide/bg3.jpg"]
我尝试了什么?
var slider_container = [];
<?php foreach($sliders as $slide): ?>
slider_container[] = "img/sliders/<?php echo $slide['Homeslider']['display_photo'] ?>";
<?php endforeach; ?>
console.log(slider_container);
错误
JavaScript 不支持 PHP 的 array[] = ...
语法,但您在这里也不需要它。
两个选项:
在 PHP 中创建一个数组,然后 json_encode
:
var slider_container =
<?php
$images = [];
foreach($sliders as $slide) {
$images[] = $slide['Homeslider']['display_photo'];
}
echo json_encode($images);
?>;
(我的PHP-fu很弱,对PHP中的错误表示歉意。)
用你的循环做,但正确(但有一个障碍):
var slider_container = [
<?php foreach($sliders as $slide): ?>
"img/sliders/<?php echo $slide['Homeslider']['display_photo'] ?>",
<?php endforeach; ?>
""
];
--slider_container.length;
console.log(slider_container);
请注意,我必须在那里玩逗号的游戏,在最后添加一个额外的条目只是为了之后将其删除。 大多数 现代浏览器会忽略尾随的逗号,但仍有一些浏览器会在末尾留下 undefined
条目,因此对于最大兼容性,您可以考虑这个. (更多关于 this post on my blog 中的尾随逗号。)
我不太喜欢混用 js 和 php,它变得丑陋而且编辑器不喜欢(缩进等等)。
我会这样做:
<?php
foreach($arr as $val) {
$filteredArr[] = "img/sliders/".$val['Homeslider']['display_photo'];
}
?>
<span id="arrayEl" style="display:none"><?=json_encode($filteredArr);?></span>
<script>
var slider_container = JSON.parse(document.getElementById("arrayEl").innerText);
</script>
我有如下数组
array(
(int) 0 => array(
'Homeslider' => array(
'id' => '1',
'title' => null,
'display_photo' => '1402379775bdaebd329b69.jpg',
'order_no' => null,
'created' => '2014-06-10 05:56:15',
'modified' => '2014-06-10 05:56:15'
)
),
(int) 1 => array(
'Homeslider' => array(
'id' => '2',
'title' => null,
'display_photo' => '1402379784a426fe476711.jpg',
'order_no' => null,
'created' => '2014-06-10 05:56:24',
'modified' => '2014-06-10 05:56:24'
)
),
(int) 2 => array(
'Homeslider' => array(
'id' => '3',
'title' => null,
'display_photo' => '1402379793cb81f1a5bbf9.jpg',
'order_no' => null,
'created' => '2014-06-10 05:56:33',
'modified' => '2014-06-10 05:56:33'
)
)
)
我想要达到的目标
["img/default/slide/bg1.jpg","img/default/slide/bg2.jpg","img/default/slide/bg3.jpg"]
我尝试了什么?
var slider_container = [];
<?php foreach($sliders as $slide): ?>
slider_container[] = "img/sliders/<?php echo $slide['Homeslider']['display_photo'] ?>";
<?php endforeach; ?>
console.log(slider_container);
错误
JavaScript 不支持 PHP 的 array[] = ...
语法,但您在这里也不需要它。
两个选项:
在 PHP 中创建一个数组,然后 json_encode
:
var slider_container =
<?php
$images = [];
foreach($sliders as $slide) {
$images[] = $slide['Homeslider']['display_photo'];
}
echo json_encode($images);
?>;
(我的PHP-fu很弱,对PHP中的错误表示歉意。)
用你的循环做,但正确(但有一个障碍):
var slider_container = [
<?php foreach($sliders as $slide): ?>
"img/sliders/<?php echo $slide['Homeslider']['display_photo'] ?>",
<?php endforeach; ?>
""
];
--slider_container.length;
console.log(slider_container);
请注意,我必须在那里玩逗号的游戏,在最后添加一个额外的条目只是为了之后将其删除。 大多数 现代浏览器会忽略尾随的逗号,但仍有一些浏览器会在末尾留下 undefined
条目,因此对于最大兼容性,您可以考虑这个. (更多关于 this post on my blog 中的尾随逗号。)
我不太喜欢混用 js 和 php,它变得丑陋而且编辑器不喜欢(缩进等等)。
我会这样做:
<?php
foreach($arr as $val) {
$filteredArr[] = "img/sliders/".$val['Homeslider']['display_photo'];
}
?>
<span id="arrayEl" style="display:none"><?=json_encode($filteredArr);?></span>
<script>
var slider_container = JSON.parse(document.getElementById("arrayEl").innerText);
</script>