我有两个变量:
$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全部。
答案 0 :(得分:10)
您的$ _SESSION隐式初始化为字符串
$_SESSION = 'blah';
$_SESSION['qty'] = 13;
var_dump($_SESSION['qty']); // gives "1"
答案 1 :(得分:1)
确实非常奇怪,我从未遇到过这种问题。如果在算术运算中明确使用整数值? (与转换为整数不同)
$_SESSION['qty'] = (intval($qty) + intval($_POST['qty']));
您是否尝试过仅使用自己的变量,并将POST值保留在操作之外?
答案 2 :(得分:1)
您使用(int)
执行的操作是转换变量,而不是转换它。您应该使用intval($var)
代替。
请参阅PHP: Integers。
答案 3 :(得分:1)
这给你带来了什么?
$localQty = 7;
$_POST['qty'] = 6;
$_SESSION['qty'] = ($localQty + $_POST['qty']);
var_dump($_SESSION['qty']);
您是否在脚本开头使用session_start()正确初始化会话?
答案 4 :(得分:1)
我会print_r($ _ SESSION)看看它是什么。