欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

【PHP源码阅读】explode和implode函数,explodeimplode_PHP教程

程序员文章站 2024-01-11 20:50:52
...

【PHP源码阅读】explode和implode函数,explodeimplode

explode和implode函数主要用作字符串和数组间转换的操作,比如获取一段参数后根据某个字符分割字符串,或者将一个数组的结果使用一个字符合并成一个字符串输出。在PHP中经常会用到这两个函数,因此有必要了解一下其原理。

explode

array explode ( string $delimiter, string $string, [ , $limit ] )

函数返回由字符串组成的数组,每个元素都是string的一个子串,被字符串$delimiter作为边界点分割出来。

参数说明

limit

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

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

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

delimiter

如果$delimiter为空,则函数返回FALSE。如果delimiter不在string中,且$limit为负数,则返回空数组。

运行示例

$str = 'hello,world,heiheihei,php';

先来看看不设置limit的情况

$arr = explode(',', $str);
print_r($arr);

【PHP源码阅读】explode和implode函数,explodeimplode_PHP教程

limit为正数时,limit设为1,最多返回1个元素。

$arr = explode(',', $str, 1);
print_r($arr);

【PHP源码阅读】explode和implode函数,explodeimplode_PHP教程

limit为负数,limit为-1,返回最后的1个元素外的所有元素。

$arr = explode(',', $str, -1);
print_r($arr);

【PHP源码阅读】explode和implode函数,explodeimplode_PHP教程

limit为0,当作1处理。

$arr = explode(',', $str, 0);
print_r($arr);

【PHP源码阅读】explode和implode函数,explodeimplode_PHP教程

explode执行步骤

1、接收参数,处理参数为空的情况

2、创建函数中使用的局部变量

3、根据limit的值调用不同的函数分隔字符串

explode函数的核心实现是php_explode函数,下面是该函数的执行流程图:

【PHP源码阅读】explode和implode函数,explodeimplode_PHP教程if (p2 == NULL) { // 找不到分隔符,直接返回整个字符串 add_next_index_stringl(return_value, p1, Z_STRLEN_P(str), 1); } else { do { // 将p1添加到return_value数组中 add_next_index_stringl(return_value, p1, p2 - p1, 1); p1 = p2 + Z_STRLEN_P(delim); } while ((p2 = php_memnstr(p1, Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp)) != NULL && --limit > 1); // 将最后一个值添加到return_value if (p1 endp) add_next_index_stringl(return_value, p1, endp

相关标签: explode