2017-02-10 23 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

Что делать, если мы хотим получить result as - сколько полей не пусто ... – 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); 
} 

код не проверяется. дайте мне знать, если он не работает