Simplifier code

Eléphanteau du PHP | 47 Messages

11 mars 2019, 20:23

Bonjour, j'aimerais savoir s'il y a possibilité de simplifier ceci ?

Code : Tout sélectionner

if (empty($ban)) { $ban = null; } if (empty($copy)) { $copy = null; } if (empty($menu)) { $menu = null; } if (empty($img)) { $img = null; } if (empty($txt)) { $txt = null; }
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 mars 2019, 21:58

Bonjour,

Trois pistes :
if (empty($ban)) unset(ban);
Ou
if (empty($ban)) $ban = null;
Ou
$ban = empty($ban) ? null : $ban;
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1609 Messages

12 mars 2019, 11:30

Salut,
foreach (array('ban', 'copy', 'menu', 'img', 'txt') as $var)
  if (empty($$var)) 
    $$var = null;
Développeur web depuis + de 20 ans

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

12 mars 2019, 12:08

Ah oui, bien vu Saian ! :-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1609 Messages

12 mars 2019, 12:27

Merci @rthur :)
C'est typiquement le genre de choses que je fais dans mes codes car j'ai un vrai problème avec les redondances, parfois même minimes. ^^
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 47 Messages

12 mars 2019, 12:38

Salut,
foreach (array('ban', 'copy', 'menu', 'img', 'txt') as $var)
  if (empty($$var)) 
    $$var = null;
Merci, c'est excellent !!!

J'ai un peu de mal à comprendre la logique des variables dynamiques ici.
Je vais essayer de refaire avec une boucle for, ce qui donne ceci ?

Code : Tout sélectionner

$table = ['ban', 'copy', 'menu', 'img', 'txt']; $nb_elements = count($table); for ($i=0; $i<$nb_elements; $i++) { $var = $table[$i]; if (empty($$var)) $$var = null; }

Avatar du membre
Mammouth du PHP | 1609 Messages

12 mars 2019, 12:45

Oui ça devrait fonctionner comme ça.
Pour les variables dynamiques c'est pas compliqué en fait :
$foo = 'bar';
$var = 'foo';
echo $$var;// affiche bar, étant donné que $$var correspond à $foo ($var est remplacé par sa valeur) et que $foo est égale à bar.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 47 Messages

12 mars 2019, 12:52

Oui, avec la boucle for, ça devient plus clair pour moi :

Code : Tout sélectionner

if (empty($$var)) $$var = null; // $$var équivaut à $ban, puis $copy, etc...
Merci encore