为什么PHP在处理二进制数据的函数上没有长度参数?

时间:2011-09-26 22:12:37

标签: php base64 binary-data

为什么处理二进制数据的函数没有长度参数?我来自C背景,所以这让我很困惑。我认为也许字符串对象保持长度,但似乎并非如此(如果我错了,请纠正我)。表现出这种行为的两个函数示例是base64_encode / decode和bin2hex。

谢谢!

2 个答案:

答案 0 :(得分:2)

php的字符串对象在内部保持长度。您可以通过调用strlen来获取此值,但由于php具有自动管理功能,因此您很少需要担心:

echo strlen("a\0b\0c"); // 5

答案 1 :(得分:2)

PHP字符串与C字符串不同。

自从我想到内幕时,已经有一段时间了。我记得,php变量被称为“zvals”,它基本上是一个跟踪数据类型,长度和数据本身等内容的结构。

所以内部(至少降到相当低的水平),PHP可能会避免依赖空终止来知道字符串的结束位置。

编辑:这是一个old article,它讨论了PHP中用户空间变量的一些内部实现