我有两个变量:
$qty = 7;
$_POST['qty'] = 6;
var_dump($qty, $_POST['qty']); // both vars are integers
$_SESSION['qty'] = $qty + $_POST['qty'];
echo '='.$_SESSION['qty'];这将返回:
int(7) int(6) =1 (int)$qty, (int)$_POST['qty']不能解决这个问题。
我做错了什么?
更新:
... intval($qty) + intval($_POST['qty']);帮不上忙。
我注意到还有一个细节。只有当$_SESSION‘’qty‘>= 10:
$_SESSION['qty'] = $qty + $_POST['qty']; // $qty = 3, $_POST['qty'] = 6返回好的结果($_SESSION‘’qty‘= 9)。
解决了
谢谢你们的揭秘。但是问题不是实际的(这是一个服务器问题)。不管怎么说+1 %。
发布于 2009-10-30 13:45:43
您的$_SESSION被隐式初始化为字符串。
$_SESSION = 'blah';
$_SESSION['qty'] = 13;
var_dump($_SESSION['qty']); // gives "1"发布于 2009-10-30 12:49:27
确实很奇怪,我从来没有遇到过这样的问题。如果在算术操作中显式使用整数值?(与整型转换不同)
$_SESSION['qty'] = (intval($qty) + intval($_POST['qty']));您是否尝试过只使用自己的变量,并将后置值排除在操作之外?
发布于 2009-10-30 12:58:06
您使用(int)所做的是转换变量,而不是转换它。您应该使用intval($var)代替。
见PHP:整数。
https://stackoverflow.com/questions/1649581
复制相似问题