php json_decode如何输出数组

时间:2011-07-26 16:57:54

标签: php json

这是我的php代码,带有json格式的字符串:

<?php

$string='{"items":  [
    {
    "address":"W 7th Ave"
    },
    {
    "address":"W 8th St"
    }
    ]}'; 

$json = json_decode($string, true);

    foreach ($json as $key => $value){
        echo "$key: $value\n";
    };

?>

我想学习如何将json字符串解析/输出到我可以在html中显示或放入数据库中的东西..但是我被困在一些非常简单的东西但我早上大部分时间都在试图计算进行。

我想了解的是为什么上面代码的结果给出了以下结果:

"items: Array"

而不是我想要/期望得到的东西:

"items: W 7th Ave"
"items: W 8th St"

我缺少什么?不是“地址”数组中“Item”的下一个“级别”吗?

5 个答案:

答案 0 :(得分:15)

$string = file_get_contents('./string.json');
$json = json_decode($string);

如果您想items: <address>

foreach ($json['items'] as $address)
{
    echo "items:". $address['address'] ."\n";
};

无论如何,如果您不确定阵列的构建方式,可以通过以下方式打印:

print_r($json);

将打印:

Array
(
    [items] => Array
        (
            [0] => Array
                (
                    [address] => W 7th Ave
                )

            [1] => Array
                (
                    [address] => W 8th St
                )
        )
)

现在您发现$json只包含两个数组的数组(items),然后,如果循环它,您将获得在您的示例中打印的数组。 如上所述,您需要通过循环items数组中的元素并打印其address元素来更深入一步。

这是完整的脚本:http://pastie.org/2275879

答案 1 :(得分:1)

您的商品 在数组中。你可以像这样循环遍历它们:

foreach ($json['items'] as $address)
{
    echo 'Address: '.$address;
}

答案 2 :(得分:1)

顺便说一句,我确实做了var_dump,print,print_r,从Object转换为Array来回切换,试图了解有关数组结构等的更多内容,并且还做了一堆echo,for和foreach循环等等。试图从阵列中得到我想要的东西。

好的总结一下,答案似乎表明我必须:

  • 首先得到整个数组,例如$ string(那样做)
  • 然后将数组解码为$ json(做到了)
  • 然后以某种方式从$ json中解析出子数组(通过引用类似于“items.address”或“[items] [address]”等引用数组中的地址(我仍然不确定上面的答案如何这样做..他们暗示它但看不到语法等?)

我尝试了两个答案并得到了:

使用TaylorOtwell回答:

我得到了: 地址:数组 地址:数组

泰勒

使用Dalen的回答:

我得到了: 0:数组 1:数组

看起来我需要以某种方式在第一个foreach中第二次循环数组以获得实际值?

看起来像这样吗?

foreach ($json['items'] as $key => $value)
{
foreach ($json['items']['address'] as $key => $value)
{
    echo "$key: $value\n";
};
};

答案 3 :(得分:0)

首先为元素创建一个类。

function getAddress(address)
{
this.address=address;
}

将对象推送到数组

newAddress = JSON.stringify(new 
getAddress(address));
AddressArray.push(newAddress);

使用

将数组转换为JSON数组
AllAddress=JSON.stringify(AddressArray);

将您的数组发送到后端/获取

等元素
$json_array  = json_decode($AllAddress, true);
for($i=0;$i<count($json_array);$i++)
{
$eachAddress = json_decode($json_array[$i],true);
$address= $eachAddress["address"];//fetch particular element from your JSON Object
}

*使用implode(php)立即从数组中获取所有元素。

答案 4 :(得分:-1)

您可能希望按如下方式简化输入字符串

$string='{"address":["W 7th Ave","W 8th St"]}';

$json = json_decode($string, true);
echo'<pre>';
print_r($json);
echo'</pre>';
foreach ($json['address'] as $key=>$value){
    echo "Address $key:". $value ."<br>";
};