J'essaie d'obtenir une variable sur ma page pour égaler le résultat d'un commutateur que j'ai.
Ceci est le code: p> Comment puis-je obtenir $ Paiement_method à égaler le résultat de cela ???? p> Jusqu'à présent, je reçois une erreur: P> Parse error: syntax error, unexpected T_SWITCH in /var/www/account/credits/moneybookers/process.php on line 65
8 Réponses :
Vous ne pouvez pas utiliser le commutateur Dans votre cas, voyant comme étant Quel serait ce qui serait beaucoup, beaucoup plus facile, cependant, met tout le matériel dans un tableau: P> code> construire de cette façon. Vous devriez avoir attribuer
$ paiement_method code> dans le cas code> Pièces code>.
echo code> peut simplement supprimer
$ pay_method = code> et il devrait fonctionner. p>
$payment_methods = array(
"visa" => "VSA",
"mastercard" => "MSC",
"maestro" => "MAE",
"amex" => "AMX"
);
if (!array_key_exists($cardtype, $payment_methods))
echo "Please specify a payment method!";
else
echo "Your method: ".$payment_methods[$cardtype];
Vous devriez faire:
$payment_method = ''; switch ($cardtype) { case "visa" : $payment_method = "VSA"; break; case "mastercard" : $payment_method = "MSC"; break; case "maestro" : $payment_method = "MAE"; break; case "amex" : $payment_method = "AMX" ; break; } if (strlen($payment_method)) { echo $payment_method; } else { echo "Please specify a payment method!"; }
Par défaut: $ paiement_method = "Veuillez spécifier une méthode de paiement!"; // avec cette implémentation, il sera impossible d'obtenir est la méthode de paiement valide ou non.
@zerkms: Droite, principale fixe, veuillez considérer votre vote en direct. Merci
@Wed logic: corrigé ;-) BTW, il recevra un avis avec ce code, quand $ cardype est invalide
@zerkms: ce qu'il voudrait remarquer, ne pouvait pas vous avoir?
maintenant rien. J'ai commenté la révision n ° 2 sans si (Strlen ()), que vous avez ajoutée plus tard ;-)
Vous devez affecter la valeur dans em> l'interrupteur:
faire de cette façon:
Utiliser des tableaux!
$types = array("visa" => "VSA", "mastercard" => "MSC", "maestro" => "MAE", "amex" => "AMX"); $type = @$types[$cardtype] or echo "Please specify a payment method!";
pour votre application em>, une matrice associative sera la meilleure solution. Pour répondre à votre question em> toutefois, vous pouvez créer votre propre commutateur / case? opérateurs
Vous ne devriez pas utiliser l'opérateur ternaire de telle manière. La réadapibilité est primordiale et dans ce cas, un commutateur est le meilleur moyen d'aller.
Si vous ne voulez pas changer votre code (comme si vous avez un commutateur très long), vous pouvez utiliser tampon de sortie . donc, par exemple, si J'espère que cela aide. P> ob_start () code> démarrera la mémoire tampon de sortie (qui va également arrêter la sortie) et
ob_get_clean () code> finira-le, ce qui renvoie tout écho tandis que l'ob cours d'exécution. P>
$ cardype code> est visa, $ paiement_method sera égal à VSA . P>
Utiliser https://www.php.net/manual/fr/control-tructures.match.php p> Exemple: P> correspondez code> instruction.
$message = match ($statusCode) {
200, 300 => null,
400 => 'not found',
500 => 'server error',
default => 'unknown status code',
};
Dupliqué possible de PHP Troubles avec des variables de codage
@Col. Shrapnel: lol, la même question du même utilisateur% -)
Pas exactement pareil. Il demande à l'affectation de la variable maintenant, pas d'écho. Mais c'est pourquoi tous ces codes un mauvais: il vient de copier / à la baster sans compréhension.