伙计这是mysql表输出。它针对特定疾病显示month(Value)
获取count(Total)
。现在我有一个12个月的php array()
,我希望与该数组进行比较,并发现如果特定月份,他们没有从表中返回的数据在该月添加0
其他新{{1 12个月或者从表中找到的值。
array()
我在php中的代码
Value | dname | Total
5 | Root Canal | 1
8 | Root Canal | 1
这就是我得到的
foreach($ResultArray2[1] as $key => $val){ if(empty($row_d['Value'])){ $ResultArray2[$i][$key] = '0'; else $ResultArray2[$i][$row_d['Value']] = $row_d['Total'];
)
这就是我需要的 数组(
Array ( [1] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 ) [2] => Array ( [5] => 1 [8] => 1 )
)
答案 0 :(得分:1)
如果我理解你的问题,那么
$finalResult = array();
while($row = mysql_fetch_object($querResult)) {
if(!is_array($finalResult[$row->dname]) {
$finalResult[$row->dname] = array_pad(array(), 13, 0);
}
$finalResult[$row->dname][$row->Value] = $row->Total;
}
基本上,代码检查是否已存在特定疾病的阵列。如果没有,它会创建一个大小为13的数组[忽略0]填充值0并在运行时更新该值。这里疾病成为外阵列的关键。如果您愿意,可以使用映射到疾病名称到整数ID。在那种情况下
$finalResult[$map[$row->dname]][$row->value] = $row->Total;
答案 1 :(得分:0)
$counts = array_fill(1,12,0);
while ($row = mysql_fetch_assoc($res)){
$counts[$row['Value']] = $row['Total'];
}
编辑:由于您似乎想要解决所有疾病,因此可能更容易将整个事情作为一个查询来执行,如下所示:
SELECT name,
SUM(IF(Value=1,1,0) as month1,
SUM(IF(Value=2,1,0) as month2,
SUM(IF(Value=3,1,0) as month3,
...
FROM tablename
GROUP BY name