当前位置:
凯发ag旗舰厅登录网址下载 >
编程语言
> php
>内容正文
php
php 字符串包含另一个字符串-凯发ag旗舰厅登录网址下载
凯发ag旗舰厅登录网址下载
收集整理的这篇文章主要介绍了
php 字符串包含另一个字符串_每天一个php语法二字符串使用及内部结构
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
说明
这里基于php7.2.5进行测试,php7之后内部结构变化应该不是太大,但与php5.x有差别。
代码
基于上一篇我们说的变量的声明与使用我们这次说一下字符串及实现
$a = "hello";我们说zend_value.str结构用来存储字符串,具体到内部的结构就是zend_string
struct _zend_string {zend_refcounted_h gc; /*引用计数 用于垃圾回收*/zend_ulong h; /* hash value */size_t len; /* 字符串长度 */char val[1]; /* 值 hello */};这里我们只关注len与val。len用来存储字符串长度,val用来存储值, val是char类型的数组,char是字符类型,长度是1个字节,存储单个字符。
这里len的好处我们可以直接获取字符串的长度,如strlen($a) , 我们后面再说这个函数。
字符串在c语言中并不是内置类型,他其实是字符数组。c语言中声明字符串
#include #include int main(){char hello[] = "hs"; printf("%s ", hello); return 0;}c语言的字符串没有存储长度,它是以null为终止符的,也就是遇到'0'字符就认为是结束了。
我们对比下,c与php中获取字符串长度的区别。
#include #include int main(){char hello[] = "h0s";char hello1[] = "hs";int len,len1;len = strlen(hello);printf("hello长度 %d ", len); // 1 因为遇到0就终止了len1 = strlen(hello1);printf("hello1长度 %d ", len1); //2 return 0;}gcc helloword.c -o helloword./hellowordhello长度 1hello1长度 2php
echo strlen("h0s");echo php_eol;echo strlen("hs");echo php_eol;php hello.php32可以看到zend_string的len是很便捷的、很安全的。
总结
php通过zend_string存储字符串,其中len存放字符串长度,val存放值。
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的php 字符串包含另一个字符串_每天一个php语法二字符串使用及内部结构的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: