在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 :(得分:1)
没有办法
使用例如这样的方式
$cases = array(0, 1, 3 ,5);
$defaultVal = 1;
$id = in_array($_POST['id'], $cases) ? $_POST['id']: $defaultVal;
答案 1 :(得分: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';
}
答案 2 :(得分: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';
}
- )