2012-07-25 27 views
0

專家這是MySQL表輸出。它顯示爲month(Value)得到count(Total)爲特定疾病。現在我有一個12個月的PHP array(),我想與該數組進行比較,並發現如果在特定月份他們沒有從表格返回的數據,則在12個月的其他新增array()中添加0或者從表格中找到的值。通過將它與MySQL數據比較填寫PHP陣列

Value | dname  | Total    
5  | Root Canal | 1   
8  | Root Canal | 1  

我在PHP代碼

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 
    ) 

這就是我需要 陣列(

[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 
    (

     [1] => 0 
     [2] => 0 
     [3] => 0 
     [4] => 0 
     [5] => 1 
     [6] => 0 
     [7] => 0 
     [8] => 1 
     [9] => 0 
     [10] => 0 
     [11] => 0 
     [12] => 0 
    ) 

+0

其中是您的表中的月份或日期列用於比較? – Omesh 2012-07-25 07:16:16

+0

值是月份。 – 2012-07-25 07:18:17

+0

'$ i'是做什麼用的?你想生成一個數組,其中有12個索引,每個索引都映射到當月的疾病計數是嗎? – Tamil 2012-07-25 07:24:23

回答

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 
+0

老兄我已經擁有數組像'$ ResultArray2 [1] = array_fill(1,12,' 0' );' – 2012-07-25 07:28:10

+0

@KaushilRambhia(現在已經看到你的代碼編輯),所以你爲什麼不這樣做,爲$ ResultArray2 [$ i],以及看起來像最簡單的方式雖然給你全面想要的東西我會去?對於我編輯到我的答案的SQL方法。 – Braiba 2012-07-25 07:40:57

+0

yaa im ding that ... – 2012-07-25 07:54:04

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;