PHP - int数字字符串值的类型转换给出0

时间:2010-11-02 01:20:09

标签: php int casting

好的,所以有一个我在另一台服务器上查询的页面,它返回一个逗号分隔的两个值列表。它会返回的东西是:

850,640

我有一些PHP代码在该页面上调用file_get_contents,需要根据这两个值进行一些数值计算。

无论我尝试什么,我似乎无法从中获得int值。

$res = trim(file_get_contents('http://thatURL/'));
echo "X" . $res . "X<br/>";
list($x,$y) = array_map(create_function('$a', 'return (int)$a;'), explode(',', $res));

echo "X:$x";

导致输出:

X 850,640 X
X:0

请注意逗号分隔值之前和之后的空格(地狱怎么样?我trim'他们!)并且$x被赋值为0

我在这里做错了什么?

4 个答案:

答案 0 :(得分:3)

  

我在这里做错了什么?

据我所见,没有任何内容表明$ res的内容与您的预期不符。你能把第一个回音更改为:

echo htmlentities($res);

我的猜测是$ res包含一些未打印的字符,例如,它实际上是:

<span> </span>850,640<span> </span>

&nbsp;850,640&nbsp;

答案 1 :(得分:1)

尝试以下方法。对于您的使用,array_map和llamda函数可能有点过分。

$res = " 850,640 ";
echo "X" . $res . "X<br/>";
list($x,$y) = explode(',', trim($res));

echo "X:" . (int)$x;
echo "Y:" . (int)$y;

为我工作,但我没有使用file_get_contents()。如果这不起作用,则页面会输出其他内容。

答案 2 :(得分:1)

PHP不是一种打字语言。使用intval将字符串转换为整数。

更正:这是一种松散的语言!这就是我的意思!

答案 3 :(得分:0)

由于我在网址上使用了file_get_contents(),因此我在echo中没有注意到一些HTML,因为它解析了...只是空身和html标签。糟糕!