价值大于或小于..困惑
我有一个非常简单的声明,检查一个值是否小于另一个,但它不起作用,任何人都可以快速检查它? 已经看到我对此完全失明。
$balance = $wallet->balance(); //3000
$loan = $wallet->loan(); // 5000
if (!$balance < $loan) { //Should be pretty straight forward...
$wallet->updateBalance(Session::get('user'),$balance - 1000);
$wallet->updateLoan(Session::get('user'),$loan - 1000);
Redirect::to('bank.php');
} else {
Redirect::to('bank.php');
}
当我运行这个代码时,无论$ balance是否少,它都会删除1000。 如果我删除感叹号,它会立即重定向,因为它应该。
我真的不明白我做错了什么?
这是完整的脚本:
<?php
require_once 'core/init.php';
if (Input::exists('get')) {
if (Input::get('borrow')) {
$wallet = new Wallet;
if ($wallet->get(Session::get('user'))) {
$balance = $wallet->balance();
$loan = $wallet->loan();
$wallet->updateBalance(Session::get('user'),$balance + 1000);
$wallet->updateLoan(Session::get('user'),$loan + 1000);
Redirect::to('bank.php');
}
} else if (Input::get('repay')) {
$wallet = new Wallet;
if ($wallet->get(Session::get('user'))) {
$balance = $wallet->balance();
$loan = $wallet->loan();
if ($balance < $loan) {
$wallet->updateBalance(Session::get('user'),$balance - 1000);
$wallet->updateLoan(Session::get('user'),$loan - 1000);
Redirect::to('bank.php');
} else {
Redirect::to('bank.php');
}
}
} else {
Redirect::to('bank.php');
}
} else {
Redirect::to('bank.php');
}
所有重定向都是临时的。非常感谢帮助
我相信问题在于运营商如何在您的条件下应用。 而不是if (!$balance < $loan)
,尝试if (!($balance < $loan))
或if ($balance >= $loan)
问题的部分原因在于PHP如何在内部表示类型,部分原因是由于运算符的优先级。 首先应用否定运算符。 因为bools在PHP中用整数表示,所以这个表达式的结果是FALSE
,它等于0
。