2008-12-10 6 views
0

Dup de Some Basic PHP Questionsbooléens avec PHP

Bonjour,

J'ai un tas de champs tinyint dans une base de données MySQL, je dois montrer avec PHP. En ce moment je fais quelque chose comme ceci:

if ($row['PAYPAL_ACCEPT'] == "1"){ 

$paypal = "Yes"; 

else 

$paypal = "No"; 

} 

Pour chaque champ, ce qui est fastidieux et semble comme il devrait y avoir une meilleure façon, que d'utiliser une clause if pour chaque champ. S'il y en a, qu'est-ce que c'est?

+0

Même question que la troisième ici: http://stackoverflow.com/questions/330709/some-basic-php-questions#330829. Fermé. –

Répondre

1

construire sur les déjà été suggéré:

// $columns = string array of column names 
// $columns = array('PAYPAL_ACCEPT' ...); 
foreach($columns as $column) { 
    $$column = $row[$column] ? 'YES' : 'NO'; 
} 

alors vous pouvez accéder aux variables en utilisant les noms de colonnes comme noms de variables :

print $PAYPAL_ACCEPT; 
+0

Est-ce que cela importait que les colonnes ne soient pas des booléens? –

+0

Cela dépend de ce que vous voulez dire par ne pas booléens, car vous pouvez convertir toutes sortes de données en booléens en PHP. Si vous voulez que toutes les variables contiennent OUI ou NON, vous pouvez l'utiliser. Encore une fois, je ne suis pas sûr de ce que vous voulez dire. – chriscena

3

Essayez si vous voulez:

$paypal = $row['PAYPAL_ACCEPT'] ? 'YES' : 'NO'; 
+0

Ceci est appelé un opérateur ternaire d'ailleurs: http://us3.php.net/language.operators.comparison. – lpfavreau

2

Quelque chose comme

$paypal = ($row['PAYPAL_ACCEPT'] ? "Yes" : "No"); 

peut-être?

0

Vous pouvez écrire plus court comme:

$paypal = ($row['PAYPAL_ACCEPT']?'Yes':'No'); 
0

ou vous pouvez utiliser non TinyInt mais ENUM avec des valeurs de Oui »et « Non », puis champ de sortie simple,

$paypal = $row['PAYPAL_ACCEPT'];