【发布时间】:2016-01-28 09:16:37
【问题描述】:
我有一个多维数组,我想以表格形式显示这个数组
+------+-----+--------+-------+-------+
| Name | red | yellow | green | white |
+------+-----+--------+-------+-------+
| abc | 8 | 2 | 4 | 0 |
| xyz | 2 | 8 | 0 | 0 |
+------+-----+--------+-------+-------+
以下是我的数组
[0] => array(
'label'=> 'red',
[value] => Array
(
[0] => array
(
[count] => 47
[firstname] => Syst
)
[1] => array
(
[count] => 2
[firstname] => xyz
)
[2] => array
(
[count] => 8
[firstname] => abc
)
)
[1] => array(
'label'=> 'yellow',
[value] => Array
(
[0] => array
(
[count] => 4
[firstname] => dim
)
[1] => array
(
[count] => 2
[firstname] => abc
)
[2] => array
(
[count] => 8
[firstname] => xyz
)
)
等等 我已经厌倦了下面的代码,但我不知道代码有什么问题。
foreach($rows as $row)
{
echo '<th>'.$row->label.'</th></tr>';
$i = 1;
$final = [];
foreach($row->value as $v){
$temp = [];
$temp[$v->firstname.' '.$v->lastname] = [];
$output = findKey($final, $v->firstname.' '.$v->lastname);
if($output){
$temp[$v->firstname.' '.$v->lastname]['count'] = $v->count ;
$temp[$v->firstname.' '.$v->lastname][$row->label.'_'.$row->color] = $v->count ;
}
array_push($final,$temp);
}
}
print_r($rows); //die;
【问题讨论】:
-
这一行是错误的
echo '<th>'.$row->label.'</th></tr>';~ 它会为循环中的每次迭代添加一个结束的tr标签,并且会抛出任何不对齐的格式 -
您提供的
print_r输出已被手动操作,不可能来自print_r。请确保提供您拥有的数组,否则解决方案将不是您所需要的。 -
您使用
->表示法,但您的数据没有显示任何对象,只有数组。您能否提供您收到的错误消息? -
我已将对象转换为数组 $arr = array(); $arr = objToArray($rows, $arr); $finalArr = 数组(); foreach($arr as $newArr){ $i=1; foreach($newArr['value'] as $valueArr){ $temp = array(); $name = $valueArr['firstname'].' '.$valueArr['姓氏']; $temp[$name]['count_'.$i] = $valueArr['count'];回声$名称; print_r($finalArr); if(multiKeyExists($finalArr,$name)){ $temp[$name]['count_'.$i] = $valueArr['count']; } $i++; array_push($finalArr,$temp); } } 但它仍然不适合我
-
什么不工作,你得到什么错误信息,什么输出是错误的?你可以说得更详细点吗?请在问题中添加此信息,因为在 cmets 中几乎无法读取。
标签: php arrays multidimensional-array foreach array-push