PHP如何在内部表示字符串


How does PHP represent string internally?

我有一个基本的PHP问题

假设我有一个字符串"02/03/2013",它在PHP内部是如何表示的,它是转换成整数还是转换成十六进制的等价

当比较两个字符串时,PHP如何在内部比较它们?

感谢您提前回答

PHP是用C编写的。所有变量都是ZVAL结构。

请阅读这些教程,了解更多关于PHP内部的信息,并开始编写扩展。

  • 扩展编写第一部分:PHP和Zend简介
  • 扩展写入第二部分:参数、阵列和ZVAL
  • 延伸写作第三部分:资源

表1显示了各种类型及其对应的字母代码和可与zend_parse_parameters()一起使用的C类型:

Type      Code    Variable Type
Boolean   b       zend_bool
Long      l       long
Double    d       double
String    s       char*, int
Resource  r       zval*
Array     a       zval*
Object    o       zval*
zval      z       zval*

PHP字符串只是一个字节序列,没有标记任何编码。请访问此处获取更多信息。。

字符串是字符串。没有发生转换;您的字符串恰好包含一些数字,这很好,但PHP对它的处理与其他字符串没有任何区别。

PHP以与任何其他语言相同的方式比较字符串:它逐个字符地遍历两个字符串,并查找第一对不同的字符。一旦它找到一个,具有ASCII值较低字符的字符串(就像从ord()中得到的一样)就会被认为比另一个字符串"小"。