если условие для огромного количества свойств объекта - PullRequest
0 голосов
/ 07 июля 2011

Я должен показать запись из базы данных, если хотя бы одно поле заполнено значением из 50 полей для строки.

Я успешно получил данные из базы данных. Хранится в массиве таких объектов

$obj[0]->prop1;
$obj[0]->prop2;

$obj[1]->prop1;
$obj[1]->prop2;

Для объекта имеется более 50 свойств.

Я должен проверить каждое свойство, если одно из них не пустое, показать эту запись.

У меня есть длинный, если это нравится

if ($obj[$counter]->prop1 !='' || $obj[0]->prop2 !='' ...
echo "show record"

хотел знать, есть ли укороченный путь. дайте мне знать, если что-то не понятно

Ответы [ 4 ]

2 голосов
/ 07 июля 2011

Объявите функцию isEmpty() в классе. Для каждого экземпляра вам нужно будет только позвонить

if(!($obj[$counter]->isEmpty()) {

   ...

}
0 голосов
/ 07 июля 2011

Так что я нашел легкий путь сам. Вы можете просто выполнить приведение типа к массиву и проверить этот массив на наличие значений, подобных этому

foreach ((array)$data[$counter] as $value)
{
   if($value !='')
   {
      $addRec=true;
   }
}
0 голосов
/ 07 июля 2011

Нет, вы должны проверять каждое свойство в отдельности ...

0 голосов
/ 07 июля 2011

Я думаю, лучше изменить ваш запрос:

select f1, f2, ... f50, f1||f2...||f50 as fsum from ...

и тогда вы можете проверить, если $obj[51] != ''

это будет работать быстрее, чем php код ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...