通过将PHP数据与MySQL数据进行比较来填充PHP数组

时间:2012-07-25 07:11:52

标签: php mysql arrays

伙计这是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
    )
     

2 个答案:

答案 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