foreach循环用于显示元素中的数据,用于json whit多个数组

时间:2016-01-05 09:23:02

标签: php arrays json foreach

我有一个来自外部域的json,我需要创建一个帖子列表,我必须在元素中写出从json中获取的数据

{
            "dati": [

        {
            "id": 98762,
            "tipo": "eventi",
            "titolo": “TITOLO 1“,
            "sottotitolo": "",
            "img": "http://www.asdsad.it",
            "url": "http://www.asdsad.it",
            "data_da": "2016-01-05",
            "data_a": "2016-01-05",
            "stato": "IT",
            "regione": "IT.10",
            "provincia": "IT.10.FM",
            "citta": "Porto Sant\'Elpidio",
            "indirizzo": "Via Faleria, 15"
        },
        {
            "id": 97004,
            "tipo": "corsi",
            "titolo": “TITOLO 2”,
            "sottotitolo": "",
            "img": “http://www.asdsad.it”,
            "url": "http://www.asdsad.it",
            "data_da": "2016-01-05",
            "data_a": "2016-01-05",
            "stato": "IT",
            "regione": "IT.08",
            "provincia": "IT.08.SV",
            "citta": "Savona",
            "indirizzo": ""
        }
            ]
        }

结果就像那样:

<div id="98762">
<h1>TITOLO 1</h1>
<img src="http://www.asdsad.it" />
<h3>eventi<h3/>
......
</div> 

<div id="97004">
<h1>TITOLO 2</h1>
<h3>corsi<h3/>
<img src="http://www.asdsad.it" />
......
</div> 

我试过这个,但我得到一个空白页..

<?php 
$data = file_get_contents("url_json");
$dataArray = json_decode($data, true);

foreach ($dataArray as $row){
    foreach ($row as $key => $value){
        switch ($key) {
            case 'id':
              echo  "<div> $value </div>";
            break;
            case 'sottotitolo':
              echo  "<h3> $value </h3>";
            break;
            case 'img':
              echo  "<img src=$value >";
            break;
           // ...
        }

    }
}

?>

2 个答案:

答案 0 :(得分:0)

我知道你在json文件中有错误。请先尝试修复那个。之后如果你得到了#34; $dataArray&#34;你可以使用这个

$data = file_get_contents("url_json");
$dataArray = json_decode($data, true);
$append_str = '';
foreach ($dataArray['dati'] as $row) {
    $append_str .= '<div id="' . $row['id'] . '">'
            . '<h1>' . $row['sottotitolo'] . '</h1>'
            . '<img src="' . $row['img'] . '" />'
            . '</div> ';
}

echo $append_str;

答案 1 :(得分:0)

您需要删除,而不是jsqon_decode()中的结果;

您可以尝试此操作(示例仅适用于特定问题):

$data = file_get_contents("url_json");
$data = str_replace('“', '"', $data); // replace “ with "
$data = str_replace('”', '"', $data); // replace ” with "
$dataArray = json_decode($data, true);