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>