PHP:变量是int但不能执行计算

时间:2010-10-18 12:03:39

标签: php int isinteger

$bal = (int)$balance;
echo is_int($bal);

$ balance来自file_get_contents($ webservice);

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

因为$ bal的值总是负数,所以我会进行以下计算以使其成为正数:

$bal = $bal * -1;

当我这样做时,即使$ bal之前可能是-150,该值也会变为0。

编辑1 var_dump($ balance)正在返回: string(110)“ -399.6000"

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

8 个答案:

答案 0 :(得分:3)

如果您想确保始终处理正数,我建议使用PHP abs()-function

$bal = abs($bal);

答案 1 :(得分:2)

根据您的var_dump输出,您的字符串以空格开头。使用此:

$bal = intval(trim($balance));

答案 2 :(得分:1)

问题在于我使用file_get_contents与Web服务的GET方法进行交互。

这是返回XML标题数据,我在分配变量时忽略了这些数据。

要清除XML以便只留下我想要的值,我使用PHP XML_PARSER将file_get_contents存储到数组中,并允许我将数组值赋值为整数。

$result = file_get_contents($base);

$p = xml_parser_create();
xml_parse_into_struct($p, $result, $vals, $index);
xml_parser_free($p);  
$bal = $vals[0]['value'];
echo $bal *-1;

答案 3 :(得分:0)

如果您想要恢复标志,请尝试此操作:

$bal = $bal * (-1);

或使用abs()如果您希望它始终为正:

$bal = abs($bal);

答案 4 :(得分:0)

答案 5 :(得分:0)

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

给出-150

答案 6 :(得分:0)

我认为你可以使用函数intval()来简化计算,它返回任何变量的整数值。如果您有php手册,请查看功能说明。

答案 7 :(得分:0)

你做多次后你的节目用$ bal做什么?以下PHP脚本在我的笔记本电脑上按预期工作:

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

输出为“1150”,因为我没有打扰换行符。你可以发布更多的代码