PHP:如何将字符串函数减1?

时间:2010-10-12 04:47:29

标签: php

我正在使用PHP访问外部API。

当调用特定的API方法时,它会返回比我想要显示的数字更高的数字。

但是,API将整数作为字符串而不是整数返回。

问题:如何将返回的字符串减1,因为它不是整数

基本上,我想做跟随伪代码(不起作用):

echo external_api() -1; // problem is, this returns "X -1" where "X" is an integer but returned as a strong

5 个答案:

答案 0 :(得分:7)

external_api()函数回显整数(9)并返回NULL。因此,当您尝试从中减去时,您会得到如下内容:

function external_api() {echo "9";}
echo external_api() - 1;

...会产生9-1

神秘解决了。

现在,解决它。假设您无法更改外部API ...

ob_start();
external_api();
$output = ob_get_clean();
echo ((int)$output) - 1;

下一次,发布一切,所以我们不会长时间不知所措。

答案 1 :(得分:2)

您可以将返回值强制转换为整数:

echo ((int) external_api()) - 1; 

** 编辑 **

这是我跑的代码

function external_api() {
    return "100";
}

echo ((int) external_api()) - 1; 

,输出为99。如果这对您不起作用,则该函数不会返回正确的值。否则,请详细说明,因为它没有任何意义。

此外,正如deceze指出的那样,即使没有强制转换,PHP也足够聪明,可以在数学运算符上完成:

echo external_api() - 1; 

也会输出99所以很明显这个神秘的功能会发生一些事情,因为问题并不在你说的地方。

BTW "2" -1的结果; 永远可以"2 -1",因为-甚至不是字符串运算符。 PHP中唯一的字符串运算符是.用于连接:"2" + 1 = 3;其中"2" . 1 = "21"

答案 2 :(得分:2)

如果函数返回一个字符串,那么您的代码应该可以正常工作。您可以尝试将值转换为整数:

echo (int)external_api() - 1;

修改

听起来您可能需要在递减之前使用preg_replace清理数据。试试这个:

echo preg_replace('/[^0-9]/', '', external_api()) - 1;

答案 3 :(得分:1)

使用(int)投射它或使用intval()将其转换为整数:

echo ((int) external_api()) - 1;

echo intval(external_api()) - 1;

施法通常是最快的。

答案 4 :(得分:0)

尝试echo intval(external_api())-1或者如果某些更高的no或其他数据类型为floatval