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

$ balance来自file_get_contents($ webService);

我正在使用(int)将字符串转换为整数。 IS_INT返回1作为true作为验证。

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

$bal = $bal * -1;

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

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

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

有帮助吗?

解决方案 3

问题是我正在使用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;

其他提示

我推荐PHP的 abs()-功能 如果您想确保自己一直在处理一个正数:

$bal = abs($bal);

按照你 var_dump 输出,字符串从一个空间开始。用这个:

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

如果要恢复标志,请尝试一下:

$bal = $bal * (-1);

或使用 ABS() 如果您希望它总是积极的:

$bal = abs($bal);
$balance="-150";
$bal = $balance*1;
echo $bal;

给出-150

完成倍数后,您的程序如何使用$ bal?以下PHP脚本按照我的笔记本电脑的预期工作:

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

输出为“ 1150”,因为我没有打扰线路。您可以发布更多代码吗

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top