簡體   English   中英

通過將其與MySQL數據進行比較來填充PHP數組

[英]Fill PHP Array by comparing it with MySQL data

伙計們,這是mysql表的輸出。 它顯示特定疾病的month(Value)獲得count(Total) 現在我有一個12個月的php array() ,我想與該數組進行比較,發現如果特定月份的數據沒有從表返回,則在12個月的另一個新array()中添加該月的0值,否則從表中找到的值。

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 ) 

如果我理解您的問題正確的話

$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;
$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM