我有一个从数据库返回的数组,我试图回显每个字段的输出,IDS在内部是相同的,然后转到下一个ID,直到完成。所以它打印出所有的ID" 1s"然后" 2s"然后当它完成它停止。 ID的数量从1-950变化。
array ( 0 => stdClass::__set_state(array
( 'Year' => '2017',
'Month' => 'January',
'name' => 'Faults',
'id' => '1',
'value' => '14058', )),
1 => stdClass::__set_state(array(
'Year' => '2017',
'Month' => 'February',
'name' => 'Faults',
'id' => '1',
'value' => '21', )),
2 => stdClass::__set_state(array
( 'Year' => '2017',
'Month' => 'January',
name' => 'Errors',
'id' => '2', 'value' => '22874', )),
3 => stdClass::__set_state(array(
'Year' => '2017',
'Month' => 'February',
'name' => 'Errors',
'id' => '2',
'value' => '2650', )), )
我正在尝试实现这样的输出:
January 2017 Faults = 14958
February 2017 Faults = 21
这里的HTML格式化分解/在
之间划分一行January 2017 Errors = 22784
February 2017 Errors = 2650
使用此foreach语法:
foreach ($results as $result) :
if ($result->id == 1){
echo '<td>', $result->Month, '</td>';
这有效但我需要更新if语句,这不是一个好的解决方案
如何更改此内容以使其查看数组内部并仅为每个&#34; id&#34;输出HTML?
我已经尝试foreach ($results =>id as $result)
但它不起作用。这是正确的想法吗?
什么是正确的语法?
谢谢!
答案 0 :(得分:0)
我正在使用array_multisort文档中的此功能。这应该适合你。我已经按照id对数组进行了排序。我们保存id,如果下一个包含它,我们将输出html代码。
$results = array_msort($results , array('id'=>SORT_ASC));
function array_msort($array, $cols){
$colarr = array();
foreach ($cols as $col => $order) {
$colarr[$col] = array();
foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
}
$eval = 'array_multisort(';
foreach ($cols as $col => $order) {
$eval .= '$colarr[\''.$col.'\'],'.$order.',';
}
$eval = substr($eval,0,-1).');';
eval($eval);
$ret = array();
foreach ($colarr as $col => $arr) {
foreach ($arr as $k => $v) {
$k = substr($k,1);
if (!isset($ret[$k])) $ret[$k] = $array[$k];
$ret[$k][$col] = $array[$k][$col];
}
}
return $ret;
}
$oldId = 0;
foreach ($results as $res){
if($oldId == $res->id){
echo '<td>', $res->Month, '</td>';
//plus other output display
}
$oldId = $res->id;
}