首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当我添加两个整数时,PHP会返回一个糟糕的结果(6+7=1)?

为什么当我添加两个整数时,PHP会返回一个糟糕的结果(6+7=1)?
EN

Stack Overflow用户
提问于 2009-10-30 12:39:10
回答 5查看 905关注 0票数 0

我有两个变量:

代码语言:javascript
复制
$qty = 7;
$_POST['qty'] = 6;

var_dump($qty, $_POST['qty']); // both vars are integers
$_SESSION['qty'] = $qty + $_POST['qty'];
echo '='.$_SESSION['qty'];

这将返回:

代码语言:javascript
复制
int(7) int(6) =1 

(int)$qty, (int)$_POST['qty']不能解决这个问题。

我做错了什么?

更新:

代码语言:javascript
复制
... intval($qty) + intval($_POST['qty']);

帮不上忙。

我注意到还有一个细节。只有当$_SESSION‘’qty‘>= 10:

代码语言:javascript
复制
$_SESSION['qty'] = $qty + $_POST['qty']; // $qty = 3, $_POST['qty'] = 6

返回好的结果($_SESSION‘’qty‘= 9)。

解决了

谢谢你们的揭秘。但是问题不是实际的(这是一个服务器问题)。不管怎么说+1 %。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-30 13:45:43

您的$_SESSION被隐式初始化为字符串。

代码语言:javascript
复制
$_SESSION = 'blah';

$_SESSION['qty'] = 13;
var_dump($_SESSION['qty']); // gives "1"
票数 10
EN

Stack Overflow用户

发布于 2009-10-30 12:49:27

确实很奇怪,我从来没有遇到过这样的问题。如果在算术操作中显式使用整数值?(与整型转换不同)

代码语言:javascript
复制
$_SESSION['qty'] = (intval($qty) + intval($_POST['qty']));

您是否尝试过只使用自己的变量,并将后置值排除在操作之外?

票数 1
EN

Stack Overflow用户

发布于 2009-10-30 12:58:06

您使用(int)所做的是转换变量,而不是转换它。您应该使用intval($var)代替。

PHP:整数

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1649581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档