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

В 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 назначены.

Имел Момент EUREKA, пока писал это
Ну, это работает для того, чего я пытался достичь в любом случае.

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';
}

0

Решение

Нет пути

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

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

Другие решения

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
По вопросам рекламы [email protected]