PHP foreach 用于迭代 json 数据


PHP foreach to iterate json data

很长一段时间以来,我第一次使用json和php,我在两者方面遇到了障碍。

我已经创建了一个包含 json 提要的 javascript 文件,并使用 php 成功解码了它,现在可以访问数据(一次一个项目),但是当我尝试迭代它并使用所有数据吐出列表项时,我遇到了障碍。

任何这方面的帮助将不胜感激。

JOSN看起来像这样:

{
    "data": [
        {
            "name": "name1",
            "alt": "name one",
            "imgUrl": "img/icons/face1.png",
            "linkUrl": "linkurl"
        },
        {
            "name": "name2",
            "alt": "name two",
            "imgUrl": "img/icons/face2.png",
            "linkUrl": "linkurl"
        }
    ]
}

和 PHP:

<?php
$json_url = "js/tiles/jsonfeed.js";
$json = file_get_contents($json_url);
$links = json_decode($json, TRUE);
?>
<ul>
    <li>
    <a href="<?php echo $links['data'][1]['linkUrl'] ?>"><img scr="<?php echo $links['data'][1]['imgUrl']; ?>" alt="<?php echo $links['data'][1]['alt']; ?>" class="share-icon" /></a>
    </li>
</ul>

现在显然,这只会抓取第二个数组插槽中的信息,我知道有一种更有效的方法来编写列表项,而无需跳入和跳出 php,并且很快就会清理。

我遇到的问题是试图将其包装在 foreach 循环中,以便为 json 提要中的每个项目吐出一个列表项。作为 json 的新手,并且有一段时间没有接触 php,我很难正确格式化循环并获取适当的数据。

有人可以帮我正常工作吗?

谢谢

你只需要对每个数据进行研究,然后依次处理每个子项:

foreach ($links['data'] AS $d){
    echo $d['linkUrl'];
}

这应该可以完成这项工作:

<?php
$json_url = "js/tiles/jsonfeed.js";
$json = file_get_contents($json_url);
$links = json_decode($json, TRUE);
?>
<ul>
<?php
    foreach($links['data'] as $key=>$val){ 
?>
    <li>
    <a href="<?php echo $val['linkUrl'] ?>">
        <img scr="<?php echo $val['imgUrl']; ?>" alt="<?php echo $val['alt']; ?>" class="share-icon" />
    </a>
    </li>
<?php
    }
?>
</ul>

你的foreach循环应该像这样迭代$links['data'],例如:

foreach($links['data'] as $item) {
    echo $item['linkUrl'];
}