PHP json encode foreach仅循环第一项
所以我正忙着创建一个系统。 该系统生成一点JSON 例如:PHP json encode foreach仅循环第一项,php,json,Php,Json,所以我正忙着创建一个系统。 该系统生成一点JSON 例如: { "Builds": [ { "title": "test", "item1": "3", "item2": "3", "item3": "0", "item4": "0", "item5": "0", "item6": "0"
{
"Builds": [
{
"title": "test",
"item1": "3",
"item2": "3",
"item3": "0",
"item4": "0",
"item5": "0",
"item6": "0"
},
{
"title": "test2",
"item1": "3",
"item2": "3",
"item3": "2",
"item4": "0",
"item5": "0",
"item6": "0"
}
]
}
现在,我试图用PHP中的foreach来获取每个“构建”,这只是第一次循环,然后什么也不做
$i = 0;
foreach($builds as $build){
//echo $i;
echo $build[$i]['title'];
echo '<img src="' . $build[$i]['item1'] . '" alt=""></img>';
$i++;
}
$i=0;
foreach($buildas$build){
//echo$i;
echo$build[$i]['title'];
回声';
$i++;
}
由于for循环,您不需要计数器
$json = '{"Builds":[{"title":"test","item1": "3","item2": "3","item3": "0","item4": "0","item5": "0","item6": "0"},{"title":"test2","item1": "3","item2": "3","item3": "2","item4": "0","item5": "0","item6": "0"}]}';
$data = json_decode($json, true);
$builds = $data['Builds'];
foreach($builds as $build){
echo $build['title'];
echo '<img src="' . $build['item1'] . '" alt=""></img>';
}
$json='{“Builds”:[{“title”:“test”,“item1”:“3”,“item2”:“3”,“item3”:“0”,“item4”:“0”,“item5”:“0”,“item6”:“0”},{“title”:“test2”,“item1”:“3”,“item2”:“3”,“item3”:“2”,“item4”:“0”,“item5”:“0”,“item6”:“0”});
$data=json_decode($json,true);
$builds=$data['builds'];
foreach($buildas$build){
echo$build['title'];
回声';
}
如果您希望迭代构建中的item元素,那么使用计数器的唯一原因是
for ($i = 1; isset($build['item' . $i]); $i++) {
echo '<img src="' . $build['item' . $i] . '" alt=""></img>';
}
for($i=1;isset($build['item'.$i]);$i++){
回声';
}
这是一个工作版本
$builds = '{"Builds":[{"title":"test","item1": "3","item2": "3","item3": "0","item4": "0","item5": "0","item6": "0"},{"title":"test2","item1": "3","item2": "3","item3": "2","item4": "0","item5": "0","item6": "0"}]}';
foreach(json_decode( $builds )->Builds as $build ){
echo $build->title;
echo '<img src="' . $build->item1 . '" alt=""></img>';
}
$builds='{“builds”:[{“title”:“test”,“item1”:“3”,“item2”:“3”,“item3”:“0”,“item4”:“0”,“item5”:“0”,“item6”:“0”},{“title”:“test2”,“item1”:“3”,“item2”:“3”,“item3”:“2”,“item4”:“0”,“item5”:“0”,“item6”:“0”});
foreach(json_解码($builds)->构建为$build){
echo$build->title;
回显“项目1”。“alt=”“>”;
}
首先,您需要使用json解码对象
Builds
进行迭代。这将为您提供要显示的对象,如$build->title
您正在处理一个对象数组。您应该这样做:
<?php
$json = ""; //your JSON string
$obj = json_decode($json);
foreach ($obj->Builds as $build) {
echo $build->title;
echo "<img src='$build->item1' alt=''>";
}
?>
为什么要使用计数器?扔掉它。echo$build['title'];
etc@JohnCondejson文件让我使用计数器。除非我使用另一个json结构。但这仍然不是我问题的答案,关于如何解决它。因为我觉得奇怪,它只循环一次。应该是foreach($builds)['Builds']as$build){
`如果我在没有coutner的情况下这样做,它仍然不起作用。我得到一个未定义的索引错误。可能需要foreach($Builds['Builds']
如果出现未定义的索引错误,$build变量不包含您发布的json的内容-如果您尝试我的代码,您会发现它确实有效吗?$build['item1']
是一个对象:$build->item1
,$build->title
和$data->Builds
@HasseBjörk json_decode作为第二个参数,这表明返回值是一个assoc数组,它们不是对象,尽管我使用了json_decode($Builds,true)只有数组作为返回值返回,我在您的示例中没有看到这一点……好吧,这确实有效!我使用json_decode($build,true),它只返回数组:)