2011-07-07 4 views
0

Je dois montrer l'enregistrement de la base de données si au moins un classé est rempli avec la valeur sur 50 champs pour une ligne.si la condition pour énorme quantité de propriétés de l'objet

J'ai récupéré des données de la base de données avec succès. Stocké dans un tableau d'objet de ce type

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

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

Il existe plus de 50 propriétés pour un objet.

Je dois vérifier chaque propriété si l'une d'elles n'est pas vide.

J'ai longtemps si comme ce

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

voulait savoir s'il y a moyen raccourcissent. laissez-moi savoir si quelque chose n'est pas clair

Répondre

2

Déclarez une fonction isEmpty() dans la classe. Pour chaque cas, vous devrez seulement appeler

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

    ... 

} 
+0

est un objet de stdClass et créé à l'aide mysql_fetch_object je ne peux pas créer méthode – Daric

+0

@Daric: Vous pouvez passer une classname à 'mysql_fetch_object()', donc vous pouvez _can_ créer une méthode. http://php.net/mysql-fetch-object – KingCrunch

0

Je pense qu'il est préférable de modifier votre requête:

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

et vous pouvez vérifier si $obj[51] != ''

cela va fonctionner plus rapidement que php code ...

0

Non, vous devez vérifier chaque propriété individuellement ...

0

J'ai donc trouvé la voie facile moi-même. Vous pouvez juste faire un type jeté l'objet d'un tableau et vérifiez ce tableau pour les valeurs comme ce

foreach ((array)$data[$counter] as $value) 
{ 
    if($value !='') 
    { 
     $addRec=true; 
    } 
} 
Questions connexes