【问题标题】:json_decode: object to associative arrayjson_decode:关联数组的对象
【发布时间】:2013-05-28 15:35:16
【问题描述】:

如何将这段可怕的代码转换为关联数组? :D

<?php
$json = file_get_contents('http://pastebin.com/NLHGMapT');
$track_data = json_decode($json);
?>
<ul>
<?php
    foreach ($track_data as $data)

            $text0 = $data->track[0]->artist->{'#text'};
            $text1 = $data->track[1]->artist->{'#text'};
            $text2 = $data->track[2]->artist->{'#text'};
            $text3 = $data->track[3]->artist->{'#text'};
            $artist0 = $data->track[0]->name;
            $artist1 = $data->track[1]->name;
            $artist2 = $data->track[2]->name;
            $artist3 = $data->track[3]->name;
            $url0 = $data->track[0]->url;
            $url1 = $data->track[1]->url;
            $url2 = $data->track[2]->url;
            $url3 = $data->track[3]->url;
        echo '<li><a href="'; echo $url0; echo '"><span>'; echo $text0; echo '</span> - <span>'; echo $artist0; echo '</span></li></a>';
        echo '<li><a href="'; echo $url1; echo '"><span>'; echo $text1; echo '</span> - <span>'; echo $artist1; echo '</span></li></a>';
        echo '<li><a href="'; echo $url2; echo '"><span>'; echo $text2; echo '</span> - <span>'; echo $artist2; echo '</span></li></a>';
        echo '<li><a href="'; echo $url3; echo '"><span>'; echo $text3; echo '</span> - <span>'; echo $artist3; echo '</span></li></a>';
?>
</ul>

【问题讨论】:

  • 我发现了一个相当明显的机会,可以使用从零到三的内部 for 循环。

标签: php arrays associative-array json


【解决方案1】:

second argument to json_decode 如果 JSON 为真(默认为假),则强制 JSON 反序列化为关联数组。

即使用json_decode($json, true)

【讨论】:

  • @MultiformeIngegno 它们不再是对象,它们是关联数组。这不是你要求的吗?
  • 嗯,是的.. 那我现在怎么称呼他们? :)
  • @MultiformeIngegno 通常的数组访问语法:$data['track'][0]['artist']['#text']
  • 哦,好的。问题是:我想将对象转换为关联数组,因为我认为这样可以避免重复每个
  • $data['track'][0], $data['track'][1], $ data['track'][2],等等..有没有办法“自动”?
  • @MultiformeIngegno 你可以;试试foreach ($data['track']
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签