Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带strlen()的PHP字符串长度_Php_Coding Style_Strlen_Php Internals - Fatal编程技术网

不带strlen()的PHP字符串长度

不带strlen()的PHP字符串长度,php,coding-style,strlen,php-internals,Php,Coding Style,Strlen,Php Internals,浏览PHP编码标准的最新版本,我注意到: 编码标准#4规定“在编写处理字符串的函数时,请务必记住PHP保存每个字符串的长度属性,并且不应使用strlen()计算它……” 我一直在使用strlen,也许现在已经晚了,但是如何访问PHP中字符串的内置length属性呢?他们谈论的是函数,而不是PHP函数。在第一个\0之后,C函数将停止计数,但是PHP字符串可以包含\0结尾以外的其他地方。已经明确提到,他们谈论的是PHP编码标准,而不是C函数或PHP引擎的扩展 ===================

浏览PHP编码标准的最新版本,我注意到:

编码标准#4规定“在编写处理字符串的函数时,请务必记住PHP保存每个字符串的长度属性,并且不应使用strlen()计算它……”


我一直在使用strlen,也许现在已经晚了,但是如何访问PHP中字符串的内置length属性呢?

他们谈论的是函数,而不是PHP函数。在第一个
\0
之后,C函数将停止计数,但是PHP字符串可以包含
\0
结尾以外的其他地方。

已经明确提到,他们谈论的是PHP编码标准,而不是C函数或PHP引擎的扩展

======================
PHP编码标准
============================
该文件列出了程序员可以添加或更改的几个标准 PHP代码,应该遵循。因为这个文件是在很晚的时候添加的 在PHPV3.0的开发阶段,代码库还没有完全恢复 跟随它,但它是朝着那个方向发展的。既然我们现在 在第4版的发行版中,许多章节都被重新编码以供使用 这些规则

尽管如此,我还是没有找到任何关于字符串长度属性的相关信息,但我认为,如果这些信息与新版本的PHP相关,将来他们可能会发布这些信息


如果有人发现这方面的有用信息,请发布。

要获取字符串zval(C中的变量)的长度,请使用Z_STRLEN(您的zval) 参见第398行的zend_operators.h(PHP5.4):


该死,你为什么要编辑?我想我还可以添加一些其他内容。哦,好吧,有一个+1:)在我看来,这个建议是专门针对PHP的。。。序言中说“这个文件列出了任何程序员在PHP中添加或更改代码时都应该遵循的几个标准。”然后把它列为这些标准之一,在语法部分的进一步介绍之前,没有提到C。。。他们特别提到不要在PHP中使用strlen。奇怪。在翻阅了PHP源代码之后,你确实是对的,看起来他们指的是C函数。
#define Z_STRLEN(zval)          (zval).value.str.len