2015-02-08 40 views
1

我的数据库如下,在PHP数组删除空值

date  income expenses maincat 
2015-02-06 10000   salary 
2015-02-05   500  bank charges 
2015-02-05   300  rent 
2015-02-01 500    bonus 

,我使用下面的SQL查询来获得DB值。

$sql= mysqli_query($con,"SELECT maincat as label,income as value FROM transaction where date BETWEEN '$date1' AND '$date2' AND email='$user' GROUP BY maincat") or die ("error3"); 

和它去,虽然下面的PHP查询,

$arr = array(); 
While($row1 = mysqli_fetch_assoc($sql)){ 
    $arr[] = $row1; 
} 
$ar = array_values($arr); 

,并给出了把这样的,

[{"label":"income","value":"10000"},{"label":"bank charges","value":""},{"label":"rent","value":""},{"label":"bonus","value":"500"}]  

,我传递一个值,Java脚本(莫里斯。 js)将它显示在圆环图中。但它不起作用。当值,

[{"label":"income","value":"10000"},{"label":"bonus","value":"500"}] 

它的工作原理fine.i着放“”值“0”,因为没有实际的收入,“银行收费”或“租”(他们的费用)没有任何方法删除此空值({“标签”:“银行手续费”,“值”:“”})从上面滚出去放为,

[{"label":"income","value":"10000"},{"label":"bonus","value":"500"}] 

和我morris.js代码如下所示,

<script> 
         Morris.Donut({ 
          element: 'donut', 
          resize : true, 
          data : <?php echo json_encode($ar); ?>, 
          backgroundColor: '#0011', 
          labelColor: 'black', 
          colors:[ 
            '#A4A4A4','#FE2E64','#0B610B','#0B615E', 
            '#FF8000','#088A68','#4B8A08','#A9D0F5', 
            '#5F4C0B','#F3F781','#81BEF7','#04B431', 
            '#D7DF01','#BE85F7','#BE59F7','#BE81F7', 
            '#F4FA58','#0431B4','#D8D8D8','#4C0B5F', 
            '#086A87','#F7D358','#DF7401','#B18904', 
            '#045FB4',        
          ], 
         }); 
        </script> 

谢谢..

+0

你可能不会首先从数据库中查询它们。只需在您的查询中添加'AND income!=''' – user1950929 2015-02-08 08:39:26

回答

0

为什么不使用循环过滤空项目?

$legalArray = array(); 
foreach($ar as $item){ 
    if(is_numeric($item['value'])) 
     $legalArray[] = $item; 
} 

输出$ legalArray。

0

您应该检查你的SQL代码

SELECT maincat as label,income as value FROM transaction where date BETWEEN '$date1' AND '$date2' AND email='$user' AND label != '' AND value != '' GROUP BY maincat" 

可能有我的查询错误的认为这是将是一个更好的办法,

你也可以使用PHP来做检查

While($row1 = mysqli_fetch_assoc($sql)){ 
if (!empty($row1['label']) && !empty($row1['value'])) 
    $arr[] = $row1; 
} 
+0

您的代码工作正常。请检查您的姓名。 :) – NuwanD 2015-02-08 11:42:30