1
$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) 正在返回:字符串(110)“-399.6000”

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

4

8 回答 8

3

如果您想确保始终处理正数,我推荐 PHP 的abs()-function :

$bal = abs($bal);
于 2010-10-18T12:07:17.877 回答
2

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

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

于 2010-10-18T12:19:30.277 回答
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;
于 2010-10-18T12:32:06.197 回答
0

如果你想恢复标志,试试这个:

$bal = $bal * (-1);

或使用abs()如果您希望它始终是积极的:

$bal = abs($bal);
于 2010-10-18T12:06:32.720 回答
0
$bal = abs($bal);

http://php.net/manual/en/function.abs.php

于 2010-10-18T12:07:57.377 回答
0
$balance="-150";
$bal = $balance*1;
echo $bal;

给出-150

于 2010-10-18T12:08:23.497 回答
0

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

于 2010-10-18T12:13:22.677 回答
0

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

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

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

于 2010-10-18T12:14:27.760 回答