14 Stimmen

PHP Variable auf den Wert des Schalters setzen

Ich versuche, eine Variable auf meiner Seite mit dem Ergebnis eines Schalters gleichzusetzen, den ich habe.

Dies ist der Code:

$payment_method = switch ($cardtype) {
case "visa" : echo "VSA"; break;
case "mastercard" : echo "MSC"; break;
case "maestro" : echo "MAE"; break;
case "amex" : echo "AMX" ; break;
default : echo "Please specify a payment method!"; break;
};

Wie kann ich erreichen, dass $payment_method dem Ergebnis von this???? entspricht?

Bis jetzt erhalte ich eine Fehlermeldung:

Parse error: syntax error, unexpected T_SWITCH in /var/www/account/credits/moneybookers/process.php on line 65

3voto

Ostap Brehin Punkte 2261

使用方法 match Erklärung.

https://www.php.net/manual/en/control-structures.match.php

Beispiel:

$message = match ($statusCode) {
    200, 300 => null,
    400 => 'not found',
    500 => 'server error',
    default => 'unknown status code',
};

Auch: https://stitcher.io/blog/php-8-match-or-switch

2voto

Das sollten Sie tun:

$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!";
}

1voto

Wenn Sie Ihren Code nicht ändern wollen (z. B. wenn Sie sehr lange Schalter haben), können Sie Ausgangspufferung .

<?php
ob_start();
switch ($cardtype) {
case "visa" : echo "VSA"; break;
case "mastercard" : echo "MSC"; break;
case "maestro" : echo "MAE"; break;
case "amex" : echo "AMX" ; break;
default : echo "Please specify a payment method!"; break;
};
$payment_method = ob_get_clean();
?>

ob_start() startet die Ausgabepufferung (was auch die Ausgabe stoppt) und ob_get_clean() beendet es und gibt alles zurück, was während der Ausführung geechot wurde.

Wenn also zum Beispiel $cardtype visa ist, ist $payment_method gleich VSA.

Ich hoffe, es hilft.

Anmerkung: Dies ist möglicherweise keine gute Lösung. Wenn möglich, verwenden Sie bitte eine Lösung aus einer anderen Antwort. Die Antwort von Pekka ist wirklich gut, versuchen Sie seine.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X