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

16voto

zerkms Punkte 239362

Auf diese Weise zu tun:

$types = array('visa' => 'VSA', 'mastercard' => 'MSC', 'maestro' => 'MAE', 'amex' => 'AMX');
if (isset($types[$cardtype])) {
    $payment_method = $types[$cardtype];
} else {
    echo 'Please specify a payment method!';
}

11voto

Eric Punkte 90800

Verwenden Sie Arrays!

$types = array("visa"       => "VSA",
               "mastercard" => "MSC",
               "maestro"    => "MAE",
               "amex"       => "AMX");

$type = @$types[$cardtype] or echo "Please specify a payment method!";

9voto

salathe Punkte 49834

Sie sollten den Wert innerhalb den Schalter:

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;
    default:
        echo "Please specify a payment method!";
    break;
};

4voto

Pekka Punkte 429407

Sie können nicht die switch so zu konstruieren. Sie müssten zuweisen $payment_method innerhalb der case Teile.

In Ihrem Fall, denn Sie sind ja echo können Sie einfach entfernen. $payment_method = und es sollte funktionieren.

Es wäre jedoch viel, viel einfacher, alles in ein Array zu packen:

$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];

3voto

2strokeMotor Punkte 31

Für Ihr Anmeldung ist ein assoziatives Array die beste Lösung. Zur Beantwortung Ihrer 問いかけ Sie können jedoch Ihren eigenen Schalter/Gehäuse aus ?

var card  = 'amex'; //however you retrieve that value

var method = card == 'visa' ? 'VSA' : card == 'mastercard' ? 'MSC' : card == 'maestro' ? 'MAE' : card == 'amex' : 'AMX' : null;  //default value is null

//  store error msgs elsewhere in the code, to ease translation/alteration
var errs = {
 'ENG', {'Please specify a payment method', '...', '...', '...'},
 'ESP', {'Favor, indique la forma de pago', '...', '...', '...'},
 'DEU', {'Bitte geben Sie eine Zahlungsmethode', '...','...','...'}
}

//  alert the appropriate error message, in the current language

var currentLang = 0; //however you set that value
if(!method) alert(errs[currentLang][0]);

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