我使用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发布于 2010-10-12 06:06:10
external_api()函数回显整数(9)并返回NULL。因此,当您试图从中减去时,您会得到如下内容:
function external_api() {echo "9";}
echo external_api() - 1;...which会产生9-1。
谜团解开了。
现在,修复它。如果你不能改变外部api..。
ob_start();
external_api();
$output = ob_get_clean();
echo ((int)$output) - 1;下一次,发布everything,这样我们就不会在很长一段时间内抓狂了。
发布于 2010-10-12 04:50:19
可以将返回值转换为整数:
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"
发布于 2010-10-12 04:51:12
如果函数返回一个字符串,那么您的代码实际上应该能工作。不过,您可以尝试将值转换为整数:
echo (int)external_api() - 1;编辑
听起来,在减少数据之前,您可能需要使用preg_replace对数据进行净化。试试这个:
echo preg_replace('/[^0-9]/', '', external_api()) - 1;https://stackoverflow.com/questions/3911775
复制相似问题