如果php mysql

时间:2017-09-13 16:00:37

标签: php mysql sql arrays

我想以这种格式生成一个数组[x,x,x],其中每个x按每个零售ID的加法进行分组,但是,对于一个空数组列表,我希望有[x,x,0假设第三个数组为空,而不是[x,x]

以下是我的代码

    <?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是缺失值

感谢

2 个答案:

答案 0 :(得分:0)

我做了一些改变。主要创建一个键值数组,取决于id作为键,并将所有这些值设置为sum =&gt;然后,当你遍历所有的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 );
    ?>]

答案 1 :(得分:-1)

在数组上添加if条件

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

这将检查数组元素是否为空,然后,如果它为空,则将数组元素分配给'0'

使用此算法