我正在使用Stripe API,如下所示:
$coupon = $_POST["coupon"];
$subscription = \Stripe\Subscription::create(array(
"customer" => $customer->id,
"plan" => $plan,
"coupon" => $coupon,
));
当设置$优惠券并且它是有效的优惠券代码时,此功能非常有用。如果我把它留空(即客户没有在提交的表单中包含优惠券代码),Stripe会抛出错误。如果我添加了Stripe中不存在的优惠券代码,则会引发错误。
所以,问题是,当变量coupon
为空时,如何构建此数组以不具有$coupon
键?
答案 0 :(得分:3)
我会这样写:
$args = [
'customer' => $customer->id,
'plan' => $plan,
];
if (!empty($_POST['coupon'])) {
$args['coupon'] = $_POST['coupon'];
}
$subscription = \Stripe\Subscription::create($args);
但这取决于。感谢Do not Panic指出empty
是更好的选择,而不是isset
。
答案 1 :(得分:2)
$payment_data = array(
"customer" => $customer->id,
"plan" => $plan,
);
if (!empty($_POST['coupon'])) {
$payment_data["coupon"] = $_POST['coupon'];
}
$subscription = \Stripe\Subscription::create($payment_data);
答案 2 :(得分:1)
如果您真的需要它,您可以使用if条件并重新构建代码。但是我相信如果你能使用速记if子句,这将是一个漂亮的代码。
($coupon) ? $arr['coupon'] = $coupon : '';
如果您设置了变量$coupon
,则会读取,然后使用密钥$arr
将其分配给数组'coupon'
,否则不执行任何操作。
您的完整代码段看起来像
$coupon = $_POST["coupon"];
$arr = array(
"customer" => $customer->id,
"plan" => $plan
);
// Magic happens here
($coupon) ? $arr['coupon'] = $coupon : '';
$subscription = \Stripe\Subscription::create($arr);