如果条件通过,但它不应该通过



所以我检查了if语句中的两个条件:

if ($amount !== $payment->price || strtolower($currency) !== strtolower($payment['currency'])) {
Log::info($amount);
Log::info($payment->price);
Log::info(strtolower($currency));
Log::info(strtolower($payment['currency']));
$payment->status = Payment::STATUS_NEEDS_ATTENTION;
$payment->message = Payment::PAYMENT_ERROR;
} else {
$payment->message = Payment::PAYMENT_ERROR;
$payment->status = Payment::STATUS_PAID;
}

我不明白为什么它通过了if条件这就是我得到的Log::info,我看到它不应该通过if条件它应该进入else

[2021-09-30 17:23:31] local.INFO: 1397  
[2021-09-30 17:23:31] local.INFO: 1397  
[2021-09-30 17:23:31] local.INFO: eur  
[2021-09-30 17:23:31] local.INFO: eur  

我不明白为什么它满足if条件而不满足其他条件?

可能的解释可能在于您使用的!==运算符。它们的数据类型可能不同。你可以尝试登录他们的PHPgettype(),或者var_dump()来检查他们的数据类型。

为什么w会是的原因吗?不同的包用于支付和购物车可能返回price作为string,不同的编码格式,例如

此外,请记住比较2个float值可能不会返回预期的结果。请确保将它们四舍五入到可接受的范围内,这样可以接受不准确

相关内容

最新更新