内容简介:将一个字符串分割成数组在日常开发中的应用应该是很多的。如果指定分割符,可以使用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 的长度,整个字符串将作为数组仅有的一个元素返回。
对于字符串直接按长度切分,一般的做法就是直接遍历字符串,以指定的长度为步长截取子串放入数组中。
首先截取长度进行判断,如果小于1直接返回空。
然后判断需要分割字符串的长度与截取长度关系,如果截取长度大于等于字符串长度,则返回一个只包含一个元素的数组。
那原字符串长度与截取长度确定循环次数。每次循环中截取一个子串添加到数组中。 while 在没有整除的时候,会遗漏最后一串字符。所以在最后使用一个 if 进行判断。
explode
explode — 使用一个字符串分割另一个字符串
如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。
如果 limit 是 0,则会被当做 1。
php_memnstr 获取字符串在另一个字符串第一次出现的位置。
如果不存在分割字符串,则直接返回包含原字符串组成的数组
通过 do 循环分别获取分隔符之间的字符串。 limit>1 保证最后一个数组元素包含字符串剩下部分。
两个函数内部实现异同
str_split 使用 add_next_index_stringl 截取字符添加到数组中。explode使用zend_hash_next_index_insert_new。
内部都是循环截取字符串实现分割字符。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解计算机系统(英文版·第2版)
[美] Randal E. Bryant、[美] David R. O'Hallaron / 机械工业出版社 / 2011-1 / 128.00元
本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。 相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下: 1. 对系统的介绍(特别是实际使......一起来看看 《深入理解计算机系统(英文版·第2版)》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
Markdown 在线编辑器
Markdown 在线编辑器