2017-09-13 100 views
0

我想生成這種格式的數組[x,x,x],其中每個x通過每個零售標識的添加進行分組,但是,對於空數組列表,我想有[X,X,0]假設第三陣列是空的,而不是[X,X]如果一個數組在PHP中爲空,則填充缺失的數組值mysql

下面是我的代碼

<?php 
$q = "SELECT DISTINCT outletid FROM " . TBL_SALES_LOGS; 
$result = $database->query($q); 
$outlets = []; 
?> 
data: [<?php 
while ($row = $result->fetch_assoc()) { 
    // $outletname = $row['title']; 
    $outlet_id = $row['outletid']; 
    $outlets[] = $row['outletid']; 
    $amount = $row['amount']; 
    ?> 
    <?php echo $outlet_id; ?>, 
<?php } ?> ] 

data: [<?php 
$outlet = implode("','", $outlets); 
$qsum3 = "SELECT outletid, SUM(amount) AS totalsum FROM " . TBL_SALES_LOGS . " WHERE outletid IN ('{$outlet}') and fueltype='PMS' group by `outletid`"; 
$qresult3 = $database->query($qsum3); 
while ($rowq3 = $qresult3->fetch_assoc()) { 
    $tot3 = $rowq3['totalsum']; 
    ?>'<?php echo $tot3; ?>',<?php } ?>] 

代替具有[3, 4,2,3]和缺失值沒有顯示,我想有[3,4,2,0,3]爲缺失值,假設0是缺失值

謝謝

+0

如何知道如果數據庫只返回四個結果,缺失值進入哪個訂單? – Ice76

+0

訂單按照無條件分組,彙總itemid中的所有金額,因此對於丟失的無條件數據,它將在數組中列出 – Ademaintain

+0

'$ outlets'是id的數組嗎? – Ice76

回答

0

我做了一些更改。大多數情況下,根據id作爲鍵創建一個鍵值數組,並將所有這些值設置爲sum => 0。然後,當您遍歷所有id和它們的總和時,它會更改它找到的id的總和。

這是未經測試,但應解決它。您可能需要更改結束。所有的開啓和關閉php標籤都很麻煩。

<?php 
$q = "SELECT DISTINCT outletid FROM " . TBL_SALES_LOGS; 
$result = $database->query($q); 
$outlets = []; 
$outletsIdSum = []; 
?> 
data: [<?php 
while ($row = $result->fetch_assoc()) { 
    // $outletname = $row['title']; 
    $outlet_id = $row['outletid']; 
    $outlets[] = $outlet_id; 
    $outletsIdSum[(int)$outlet_id] = 0; 
    $amount = $row['amount']; 
    ?> 
    <?php echo $outlet_id; ?>, 
<?php } ?> ] 

data: [<?php 
$outlet = implode("','", $outlets); 
$qsum3 = "SELECT outletid, SUM(amount) AS totalsum FROM " . TBL_SALES_LOGS . " WHERE outletid IN ('{$outlet}') and fueltype='PMS' group by `outletid`"; 
$qresult3 = $database->query($qsum3); 
while ($rowq3 = $qresult3->fetch_assoc()) { 
    $outletsIdSum[(int)$rowq3['outletid']] = $rowq3['totalsum']; 
} 
echo "'" . implode("','", $outletsIdSum); 
    ?>] 
+0

謝謝你,這對我來說工作得很好 – Ademaintain

-1

添加如果上排列條件

<?php 
    foreach(some_array as a) 
     { 
     if(a=="" or a==NULL) 
     a=0; 
    } 
?> 

這將檢查裏面是空的,然後,數組元素如果是空的,將數組元素分配給「0」

使用這種算法

+0

請詳細解釋 – Ademaintain

+1

這對請求不準確,無助於解答。它不能用於上面顯示的代碼 – Ice76

+0

讓我解釋一下,首先你要從數據庫中選擇數據.table包含5列,如果用戶只插入4個值。 –

相關問題