PHP 字符串分割成数组函数 explode, str_split 内部实现

栏目: PHP · 发布时间: 6年前

内容简介:将一个字符串分割成数组在日常开发中的应用应该是很多的。如果指定分割符,可以使用explode,如果没有分割符,可以使用split实现。 那么两个函数内部如何实现,有什么不同呢?str_split — 将字符串转换为数组如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块。

将一个字符串分割成数组在日常开发中的应用应该是很多的。如果指定分割符,可以使用explode,如果没有分割符,可以使用split实现。 那么两个函数内部如何实现,有什么不同呢?

str_split

str_split — 将字符串转换为数组

如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块。

没有split_length参数,每个字符块为单个字符。

如果 split_length 小于 1,返回 FALSE。

如果 split_length 参数超过了 string 超过了字符串 string 的长度,整个字符串将作为数组仅有的一个元素返回。

对于字符串直接按长度切分,一般的做法就是直接遍历字符串,以指定的长度为步长截取子串放入数组中。

PHP 字符串分割成数组函数 explode, str_split 内部实现

首先截取长度进行判断,如果小于1直接返回空。

然后判断需要分割字符串的长度与截取长度关系,如果截取长度大于等于字符串长度,则返回一个只包含一个元素的数组。

那原字符串长度与截取长度确定循环次数。每次循环中截取一个子串添加到数组中。 while 在没有整除的时候,会遗漏最后一串字符。所以在最后使用一个  if  进行判断。

explode

explode — 使用一个字符串分割另一个字符串

如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。

如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。

如果 limit 是 0,则会被当做 1。

PHP 字符串分割成数组函数 explode, str_split 内部实现

php_memnstr 获取字符串在另一个字符串第一次出现的位置。

如果不存在分割字符串,则直接返回包含原字符串组成的数组

通过 do 循环分别获取分隔符之间的字符串。 limit>1 保证最后一个数组元素包含字符串剩下部分。

两个函数内部实现异同

str_split 使用 add_next_index_stringl 截取字符添加到数组中。explode使用zend_hash_next_index_insert_new。

内部都是循环截取字符串实现分割字符。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Clean Code

Clean Code

Robert C. Martin / Prentice Hall / 2008-8-11 / USD 49.99

Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code......一起来看看 《Clean Code》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具