Page 1 sur 1

Simplifier code

Posté : 11 mars 2019, 20:23
par fatalfury
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

Re: Simplifier code

Posté : 11 mars 2019, 21:58
par @rthur
Bonjour,

Trois pistes :
if (empty($ban)) unset(ban);
Ou
if (empty($ban)) $ban = null;
Ou
$ban = empty($ban) ? null : $ban;

Re: Simplifier code

Posté : 12 mars 2019, 11:30
par Saian
Salut,
foreach (array('ban', 'copy', 'menu', 'img', 'txt') as $var)
  if (empty($$var)) 
    $$var = null;

Re: Simplifier code

Posté : 12 mars 2019, 12:08
par @rthur
Ah oui, bien vu Saian ! :-)

Re: Simplifier code

Posté : 12 mars 2019, 12:27
par Saian
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. ^^

Re: Simplifier code

Posté : 12 mars 2019, 12:38
par fatalfury
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; }

Re: Simplifier code

Posté : 12 mars 2019, 12:45
par Saian
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.

Re: Simplifier code

Posté : 12 mars 2019, 12:52
par fatalfury
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