Ссылочное выражение в switch

0

В PHP можно получить ссылку на выражение, используемое в инструкции switch?

Например:

switch ($_POST['id']) {
    case 0:
        $id = <switch expression>
        break;
    case 1:
        $id = <switch expression>
        break;
    default
        $id = null;
}

поэтому, если $_POST['id'] = 1, то $id = 1

Тогда я могу проверить, if (! $id) {}

Очевидно, вы, вероятно, думаете, почему бы просто не использовать $id = $_POST['id'] но в реальном примере это выглядит так

switch (strtolower($load->post('payment_method')))
{
    case 'paypal':
        $payment_method = <switch/case expression>;
        $payment_type = 'ewallet';
        break;
    case 'bitcoin':
        $payment_method = <switch/case expression>;
        $payment_type = 'ecurrency';
        break;
    default:
        //$payment_method = null; // taken from card number
        $payment_type = 'card';
}

Я не хочу $payment_method.

УБЕДИТЕСЬ, ЧТО ЕВРОПЕЙСКИЙ МОМЕНТ, КОТОРЫЙ ПИСЬЕТ ЭТО
Ну, это работает для того, чего я пытался добиться в любом случае.

switch (($payment_method = strtolower($load->post('payment_method'))))
{
    case 'paypal':
        $payment_type = 'ewallet';
        break;
    case 'bitcoin':
        $payment_type = 'ecurrency';
        break;
    default:
        unset($payment_method); // taken from card number
        $payment_type = 'card';
}
Теги:
switch-statement

3 ответа

1

Нет способа

используйте, например, такой способ

$cases = array(0, 1, 3 ,5);
$defaultVal = 1;
$id = in_array($_POST['id'], $cases) ? $_POST['id']: $defaultVal;
0

AFAIK нет такой функции в PHP.

Но вы можете делать то, что ищете, так просто:

switch (strtolower($load->post('payment_method')))
{
    case 'paypal':
        $payment_method = 'paypal';
        $payment_type = 'ewallet';
        break;
    case 'bitcoin':
        $payment_method = 'bitcoin';
        $payment_type = 'ecurrency';
        break;
    default:
        $payment_method = null; // taken from card type
        $payment_type = 'card';
}
0

На самом деле я просто понимаю, что это возможно возможно с помощью простого обходного пути:

switch ($switch_value = strtolower($load->post('payment_method')))
{
    case 'paypal':
        $payment_method = $switch_value;
        $payment_type = 'ewallet';
        break;
    case 'bitcoin':
        $payment_method = $switch_value;
        $payment_type = 'ecurrency';
        break;
    default:
        $payment_method = null; // taken from card type
        $payment_type = 'card';
}

;-)

  • 0
    я думаю, просто unset($payment_method) будет лучше в этом случае :)
  • 0
    @ Кристиан Это, конечно, еще один подход, да. Но это отвечает на вопрос ОП ближе.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню