PHP:变量为int,但可以';不进行计算

PHP:变量为int,但可以';不进行计算,php,int,isinteger,Php,Int,Isinteger,$balance来自文件获取内容($webservice) 我正在使用(int)将字符串转换为整数。is_int返回1表示真,作为验证 由于$bal的值始终为负值,因此我进行以下计算以使其为正值: $bal = (int)$balance; echo is_int($bal); $bal = $bal * (-1); $bal = abs($bal); 当我这样做时,值变为0,即使$bal以前可能是-150 编辑1 var_dump($balance)正在返回: 字符串(110)” -39

$balance来自文件获取内容($webservice)

我正在使用(int)将字符串转换为整数。is_int返回1表示真,作为验证

由于$bal的值始终为负值,因此我进行以下计算以使其为正值:

$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * (-1);
$bal = abs($bal);
当我这样做时,值变为0,即使$bal以前可能是-150

编辑1 var_dump($balance)正在返回: 字符串(110)” -399.6000“


编辑2我已使用XML解析器将变量分配给数组-请参阅下面的答案。

如果要还原符号,请尝试以下操作:

$bal = $bal * -1;
或者,如果您希望它始终是积极的,请使用:

$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * (-1);
$bal = abs($bal);

如果要还原该标志,请尝试以下操作:

$bal = $bal * -1;
或者,如果您希望它始终是积极的,请使用:

$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * (-1);
$bal = abs($bal);
如果要确保始终处理正数,我建议使用PHP:

如果要确保始终处理正数,我建议使用PHP:

给-150


给出-150

我认为使用函数intval()可以简化计算,该函数返回任何变量的整数值。如果您有php手册,请仔细阅读函数说明。

我认为使用返回任何变量整数值的函数intval()可以简化计算。如果您有php手册,请仔细阅读函数说明。

执行乘法后,您的程序使用$bal做什么?以下PHP脚本在我的笔记本电脑上按预期工作:

$balance="-150";
$bal = $balance*1;
echo $bal;


输出为“1150”,因为我不需要换行符。您可以发布更多的代码吗?

执行乘法后,您的程序使用$bal做什么?以下PHP脚本在我的笔记本电脑上按预期工作:

$balance="-150";
$bal = $balance*1;
echo $bal;


输出为“1150”,因为我不需要换行符。您可以发布更多的代码吗?根据您的
var\u dump
输出,您的字符串以空格开头。使用以下命令:


$bal=intval(修剪($balance))

根据
var\u dump
输出,字符串以空格开头。使用以下命令:


$bal=intval(修剪($balance))

问题是,我使用file\u get\u内容与Web服务的get方法交互

这是返回XML头数据,我在分配给变量时忽略了这些数据

为了清除XML,只留下我想要的值,我使用了PHP XML_解析器,它将file_get_内容存储到一个数组中,并允许我将数组值赋给一个整数

<?php
$balance = "-150";
$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * -1;
echo $bal;
?>

问题是,我使用file\u get\u内容与Web服务的get方法交互

这是返回XML头数据,我在分配给变量时忽略了这些数据

为了清除XML,只留下我想要的值,我使用了PHP XML_解析器,它将file_get_内容存储到一个数组中,并允许我将数组值赋给一个整数

<?php
$balance = "-150";
$bal = (int)$balance;
echo is_int($bal);
$bal = $bal * -1;
echo $bal;
?>


还要看看这不是答案,但是为什么不使用
abs()
而不是乘法be-1呢。有一天,
$bal
可能并不总是负面的。@Jason:也看看评论#1;-)虽然您确实应该使用
abs
,但所提供的代码没有任何错误,如果
$bal==-150
&
-1==-1
,它不会给您0。更有可能的是,
$balance
(货币符号、HTML标记、空格等)中存在一些垃圾,阻止将其转换为所需的整数。如果无法识别数字,则正常处理会将其转换为0。@baswoni:
string(110)“-399.6000”
不计算,如果在浏览器中查看,请查看源代码,不是网页,因为
-399.6000
的字符数远远少于110个。请注意这不是答案,但为什么不使用
abs()
而不是乘法be-1呢。有一天,
$bal
可能并不总是负面的。@Jason:也看看评论#1;-)虽然您确实应该使用
abs
,但所提供的代码没有任何错误,如果
$bal==-150
&
-1==-1
,它不会给您0。更有可能的是,
$balance
(货币符号、HTML标记、空格等)中存在一些垃圾,阻止将其转换为所需的整数。如果无法识别数字,则正常处理会将其转换为0。@baswoni:
string(110)“-399.6000”
不计算,如果在浏览器中查看,请查看源代码,不是网页,因为
-399.6000
的字符远远少于110个。。。。和这个问题无关-那是关于乘以-1。。。。这与问题无关-那是关于乘以-1。当我这样做时,我得到的回报是0。问题是我得到了错误的数据。var_dump($balance)=字符串(110)“-399.6000”@baswoni:如果您使用(可能与关联)会发生什么?您在abs调用中错过了$-符号;)/@巴斯沃尼:如果你不只是复制粘贴的话,你应该注意到他的错误…@oezi:谢谢你的提示;)当我这样做时,返回值为0。问题是我的数据不正确。var_dump($balance)=字符串(110)“-399.6000”@baswoni:如果您使用(可能与关联)会发生什么?您在abs调用中错过了$-符号;)/@巴斯沃尼:如果你不只是复制粘贴的话,你应该注意到他的错误…@oezi:谢谢你的提示;)
(int)$var
&
intval($var)
是等价的。
(int)$var
&
intval($var)
是等价的。除了一个空格之外,一个空格并不能解释其他100个缺少的字符:)@Wrikken:没错!我猜他的反应是:“哦,他们不需要看到所有这些垃圾,我就不说了。”除了一个空格,一个空格不能解释其他100个缺少的字符:)@Wrikken:是的!我猜他的反应是:“哦,他们不需要看到所有这些垃圾,我就不说了。”