在PHP中无法将字符串转换为int

时间:2014-12-01 23:58:46

标签: php

我很难将从套接字连接中读取的值转换为整数。它的值告诉我接下来要接收多少字节。

$ar = fread($client, 4);
$binaryInt = unpack('N', $ar);
debug_to_console($binaryInt); //displays 16 (as expected)
$bred = fread($client, intval($binaryInt)); //intval returns 1

由于某种原因,intval始终计算为1,我无法弄清楚原因。顺便说一下,$ ar变量从我通过此代码示例运行的java服务器发送一个整数

dOut.writeInt(data.length);

由于

修改

我终于明白了。 user2587326下面有帮助,但不是使用intval(binaryInt [1]),它只是binaryInt [1]。

1 个答案:

答案 0 :(得分:1)

我认为您正在读取通过DataOutputStream从Java程序发送到套接字上的PHP程序的4字节整数。

首先,fread($ client,4)调用将这4个字节作为字符串读取, 然后你用unpack()将它们转换为一个数组,一次取4个字节 (格式说明符'N')因此产生一个带有一个元素的数组,所以你只需使用:

intval( $ binaryInt [1] 而不是intval($ binaryInt)来获取该数字。

编辑:但它也适用于intval,它不会伤害它。