【发布时间】:2017-09-23 14:45:38
【问题描述】:
我有一些带有foreach 的脚本,见下文,
我的 for each 总是从我的 json 对象显示输出 2 - 1 - 3 - 4 - 等,如何解决我的问题?
<?php public function renderLayout3x3($data=array()){
$output = "<ul>";
foreach ($data as $key => $value) {
if($value['posisi'] == '1'){
$output .= "<li><ul>
<li>POS:".$value['posisi']."</li>
<li>HOSTNAME:".$value['hostname']."</li>
</ul></li>";
}
if($value['posisi'] == '2'){
$output .= "<li><ul>
<li>POS:".$value['posisi']."</li>
<li>HOSTNAME:".$value['hostname']."</li>
</ul></li>";
}
if($value['posisi'] == '3'){
$output .= "<li><ul>
<li>POS:".$value['posisi']."</li>
<li>HOSTNAME:".$value['hostname']."</li>
</ul></li>";
}
//for debug..
print json_encode($value['posisi']);
/*
Output : "2","1","3","4","5","6","7","8","9"
Why : 2 - 1 - 3 - etc, not 1 - 2 - 3 - etc
*/
}
$output .= "</ul>";
return $output;
}
$json_data = '{"ch":"79",
"ipaddr":"172.16.11.100",
"hostname":"TMC-MALL01",
"posisi":"2",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"78",
"ipaddr":"172.16.11.99",
"hostname":"TMC-JSB01",
"posisi":"1",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"80",
"ipaddr":"172.16.11.101",
"hostname":"TMC-MALL02",
"posisi":"3",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"92",
"ipaddr":"172.16.11.106",
"hostname":"TMC-PALMA01",
"posisi":"4",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"93",
"ipaddr":"172.16.11.107",
"hostname":"TMC-PALMA02",
"posisi":"5",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"112",
"ipaddr":"172.16.11.129",
"hostname":"TMC-R.PRM01",
"posisi":"6",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"113",
"ipaddr":"172.16.11.130",
"hostname":"TMC-R.PRM03",
"posisi":"8",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"114",
"ipaddr":"172.16.11.131",
"hostname":"TMC-R.PRM02",
"posisi":"7",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}{
"ch":"115",
"ipaddr":"172.16.11.132",
"hostname":"TMC-R.PRM04",
"posisi":"9",
"monitorid":"17",
"view_dimension":"2*2",
"input_ipaddr":""
}';
$render = renderLayout3x3($json_data);
print $render; ?>
总是输出:
Output : "2","1","3","4","5","6","7","8","9"
为什么:2 - 1 - 3 - 等等,而不是 1 - 2 - 3 - 等等
【问题讨论】:
-
预期 o/p 是什么
-
向我们展示您的原始原始 JSON 结构。
-
您的原始 json 在 2-1-3 中具有 posisi...order 这就是原因
-
您按该顺序获取它们,因为这是您的 json 对它们的顺序。循环它不会神奇地为您排序,您必须自己做。据我所知,那些 if 语句的作用完全相同,这使得它们都是多余的。你可以像现在一样把它切成一个块。
-
@Script47 我使用 'posisi' 进行索引
标签: php json if-statement foreach