繁体   English   中英

PHP多维数组中的Javascript数组

[英]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条目,因此对于max compat,您可以考虑这样做。 (有关我博客上这篇文章中结尾逗号的更多信息 。)

我真的不喜欢将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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM