Construire un nom de variable PHP basé sur d'autres valeurs de variables et du texte statique

StackOverflow https://stackoverflow.com/questions/1817922

  •  10-07-2019
  •  | 
  •  

Question

Je souhaite indiquer à ma fonction quelle variable appeler en fonction du jour de la semaine. Le jour de la semaine est stocké dans $ s_day et les variables que je souhaite appeler changent en fonction de la journée.

par exemple

J'ai stocké une chaîne "Bienvenue dans la semaine" dans $ d_monday_text1. Plutôt que de construire un ensemble de 7 instructions conditionnelles (par exemple, si date = lundi echo $ foo, sinon si date = mardi echo $ bar ...), puis-je changer le nom de la variable appelée dans la fonction en concaténant le nom du variable?

$s_day = date("l");
$text1 = '$d_'.$s_day.'_text1';

J'espère que ceci sera évalué à $ d_monday_text1, ce qui, comme mentionné ci-dessus, a la valeur "Bienvenue à la semaine". Donc, plus tard, je voudrais utiliser:

echo $text1;

Pour obtenir le résultat obtenu = Bienvenue dans la semaine.

J'ai examiné les variables variables, ce qui pourrait être la solution, mais je me bats avec la syntaxe. Je peux le faire renvoyer le nom concaténé, mais je ne vois pas comment faire évaluer ce nom.

Était-ce utile?

La solution

Les variables variables ne sont pas une bonne idée. Vous devriez plutôt utiliser des tableaux. Ils conviennent beaucoup mieux à ce problème.

Par exemple, vous pouvez utiliser quelque chose comme ceci:

$messages = array(
    'monday' => 'Welcome to the week',
    'tuesday' => 'Blah blah',
    'wednesday' => 'wed',
    'thursday' => 'thu',
    'friday' => 'fri',
    'saturday' => 'sat',
    'sunday' => 'week is over!'
);

$dayName = date('l');
echo $messages[$dayName];

Les tableaux sont le format de données utilisé pour stocker plusieurs valeurs associées telles que celles-ci.

Autres conseils

Vous pouvez utiliser cette syntaxe:

$$ text1

Je l'ai déjà utilisé. L’évaluation se présente comme suit:

$ ($ text1)

Prenons l'exemple suivant:

$construction_no = 5;
$construction_5 = 'Door';

$var_name = 'construction_'.$construction_no;
$var_value = ${$var_name};
echo $var_value; //Door

Approche orientée objet

$var_value = $this->{$var_name};
echo $var_value; //Door 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top