这是我的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”的下一个“级别”吗?
答案 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)
好的总结一下,答案似乎表明我必须:
我尝试了两个答案并得到了:
使用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>";
};