检查变量添加关键阵列之前设置 - PHP
问题描述:
我使用了条纹API,像这样:检查变量添加关键阵列之前设置 - PHP
$coupon = $_POST["coupon"];
$subscription = \Stripe\Subscription::create(array(
"customer" => $customer->id,
"plan" => $plan,
"coupon" => $coupon,
));
当$优惠券设置这个伟大的工程,这是一个有效的优惠券代码。如果我将其留空(即客户未在提交的表单中包含优惠券代码),则Stripe将引发错误。如果我包含Stripe中不存在的优惠券代码,则会引发错误。
所以,问题是,当变量$coupon
为空时,如何构建此数组使其不具有coupon
键?
答
$payment_data = array(
"customer" => $customer->id,
"plan" => $plan,
);
if (!empty($_POST['coupon'])) {
$payment_data["coupon"] = $_POST['coupon'];
}
$subscription = \Stripe\Subscription::create($payment_data);
答
我会写这样的:
$args = [
'customer' => $customer->id,
'plan' => $plan,
];
if (!empty($_POST['coupon'])) {
$args['coupon'] = $_POST['coupon'];
}
$subscription = \Stripe\Subscription::create($args);
但要看。感谢不要恐慌,指出empty
是更好的选择,而不是isset
。
答
如果你真的想要它,你可以使用条件和重构你的代码。但是我相信如果你可以使用速记if子句,这将是一个漂亮的代码。
($coupon) ? $arr['coupon'] = $coupon : '';
此读取,如果你有变量$coupon
集,然后将其与关键'coupon'
分配给数组$arr
,别的什么也不做。
你的全代码段会是什么样子,
$coupon = $_POST["coupon"];
$arr = array(
"customer" => $customer->id,
"plan" => $plan
);
// Magic happens here
($coupon) ? $arr['coupon'] = $coupon : '';
$subscription = \Stripe\Subscription::create($arr);
'如果(isset($ _ POST [ “优惠券”))'? – Gogol
或'if(!empty())' –
@Gogol我知道如何检查变量是否已设置,但是如果未设置,那么我甚至不能在我的数组中包含''优惠券''键。 – jonmrich