日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 字符串包含另一个字符串_每天一个PHP语法二字符串使用及内部结构

發布時間:2025/1/21 php 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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長度 2

PHP

echo strlen("h0s");echo PHP_EOL;echo strlen("hs");echo PHP_EOL;php hello.php32

可以看到zend_string的len是很便捷的、很安全的。

總結

php通過zend_string存儲字符串,其中len存放字符串長度,val存放值。

總結

以上是生活随笔為你收集整理的php 字符串包含另一个字符串_每天一个PHP语法二字符串使用及内部结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。