2017-02-10 52 views
5

我有一个属性表,它有六列。用户上传的照片和图像名称存储在列中。计数行中的空列

现在我想要计算每个空行的列数。

我已经能够做到这一点,但代码看起来太长,我想编写高效的代码,有没有一种方法来有效地重写以下内容。

while($data=$select->fetch()){ 

    $imagecounter=0; 
    if ($data['property_image1'] !== "" && $data['property_image2'] !== "" && $data['property_image3'] !== "" && $data['property_image4'] !== "" && $data['property_image5'] !== "" && $data['property_image6'] !== "") { 
    echo $imagecounter=6; 
    } else if ($data['property_image1'] !== "" && $data['property_image2'] !== "" && $data['property_image3'] !== "" && $data['property_image4'] !== "" && $data['property_image5'] !== "") { 
    echo $imagecounter=5; 
    } else if ($data['property_image1'] !== "" && $data['property_image2'] !== "" && $data['property_image3'] !== "" && $data['property_image4'] !== "") { 
    echo $imagecounter=4; 
    } else if ($data['property_image1'] !== "" && $data['property_image2'] !== "" && $data['property_image3'] !== "") { 
    echo $imagecounter=3; 
    } else if ($data['property_image1'] !== "" && $data['property_image2'] !== "") { 
    echo $imagecounter=2; 
    } else if ($data['property_image1'] !== "") { 
    echo $imagecounter=1; 
    } 

} 

回答

2

你可以像下面: -

while($data=$select->fetch()){ 
    $data1 = array($data['property_image1'],$data['property_image2'],$data['property_image3'],$data['property_image4'],$data['property_image5'],$data['property_image6']); 
    $count = count($data1); // count of original array 
    $count1 = count(array_filter($data1)); // remove empty indexes and count the values 

    echo "empty columns number is :-".($count-$count1); 
} 

注: - $count1非空值

+0

有更多的数据来,有更多的专栏,但我想检查只有这六列... – DragonFire

+0

这也是工作 – DragonFire

+0

如果我们想要得到结果是 - 有多少字段不是空的... – DragonFire

1

的计数试试这个代码

while($data=$select->fetch()): 
    $imagecounter = 0; 
    for($i=1; $i<=6; $i++) 
     if(!empty($data["property_image$i"])) 
      $imagecounter++; 

    echo $imagecounter; 
endwhile; 
+0

@DragonFire:这个代码呢? – bfahmi

+0

由于两个循环而耗费时间意义上的不好代码 –

+0

这是工作 – DragonFire

1

执行列名h作为其规则?

假设它是 'property_image {数}'

while($row=$result->fetch()) { 
    $count = 0; 
    for($i=0; $i<6; $i++) { 
     if($row['property_image'.$i]==NULL) 
      $count++; 
    } 
    echo "empty columns number is :-".($count); 
} 

代码未经测试。 让我知道,如果它不工作