我试图从同一页面获取一些源文件的内容并将它们保存到MySQL中。某些文件具有与其他文件不同的属性名称,因此更“自动”的代码将有所帮助。我粘贴在示例源文件下面,但您可以在下面看到我的代码。
示例源文件:
{
Trims: [
{
"model_id":"15155"
,"model_make_id":"ford"
,"model_name":"Taurus"
,"model_trim":""
,"model_year":"2000"
,...(all available model fields are included)
},
{
"model_id":"15073"
,"model_make_id":"ford"
,"model_name":"Taurus"
,"model_trim":"3.0"
,"model_year":"2000"
,...(all available model fields are included)
},
{etc...}
}]}
预期输出:
我想只打印一次属性名称,因为所有源文件的编号都相同。
model_id
model_make_id
model_name
model_trim
model_year
...and so on....
------
and afterwards all the values
15155
ford
Taurus
2000
...and so on...
15073
ford
Taurus
3.0
2000
...and so on...
首次尝试解决方法: http://codepad.viper-7.com/dZDxoo
我可以打印属性名称和值。但有问题。我只需要一次属性名称,这没关系。但它只打印VALUES的第一个块,而不打印其他VALUES。如果我可以打印所有内容,这是我的解决方案。我正在使用的不同源文件中的属性名称数量不同,因此这有助于我自动获取名称。
<?php
$json = file_get_contents('http://www.carqueryapi.com/api/0.3/?cmd=getTrims&year=2007&make=mini');
$vres = array('{"Trims":' , '}]}');
$allakse = array("" , "}]");
$json = str_replace($vres, $allakse, $json);
$cars = json_decode($json, true);
foreach ($cars[0] as $key => $car)
{
echo "$key", "\n";
}
echo"<br><br>";
foreach ($cars[0] as $key => $car)
{
echo "$car", "\n";
}
第二次尝试解决方法: http://codepad.viper-7.com/7bcDUx
因为源文件具有不同数量的属性,所以具有固定的for each - echo loop
将无法帮助我。这很重要,因为我想从每个源文件中自动获取属性名称。另外,我无法打印属性名称,只能打印值。
<?php
$json = file_get_contents('http://www.carqueryapi.com/api/0.3/?cmd=getTrims&year=2007&make=mini');
$cars = json_decode($json, true);
foreach($cars['Trims'] as $car){
echo $car['model_body'].'<br/>';
}
我该如何回应所有块中的所有值,而不是仅从第一个块回显?
答案 0 :(得分:1)
当你有解码的json时,你可以操作数组并打印任何项目的标题(让我们选择第一项),然后打印数组中所有项目的值:
<?php
function PrintFieldNames($item)
{
foreach($item as $key => $value)
{
echo($key . "<br/>");
}
}
function PrintFieldValues($item)
{
foreach($item as $key => $value)
{
echo($value . "<br/>");
}
}
$json = file_get_contents('http://www.carqueryapi.com/api/0.3/?cmd=getTrims&year=2007&make=mini');
$cars = json_decode($json, true);
$cars = $cars['Trims'];
PrintFieldNames($cars[0]);
foreach($cars as $car)
{
PrintFieldValues($car);
}
?>