explode和split在php中都是可以通过特定字符把字符串转换成数组哦,那么explode和split既然是一样的为什么会有两个函数呢,那么explode和split的区别在哪里呢,我们来看看。

前言

之所以做这个,是因为这两个函数的作用很像,都是把字符串转换成数组。

explode

从下面的例子可以看出,生成的数组是有对应的顺序的。

 代码如下 复制代码

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";

$pieces = explode(" ", $pizza);

echo $pieces[0]; // piece1

echo $pieces[1]; // piece2

// 示例 2

$data = "foo:*:1023:1000::/home/foo:/bin/sh";

list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);

echo $user; // foo

echo $pass; // *

注意的是,如果第一个参数为空字符串的话,就会产生Warning。

 代码如下 复制代码

var_dump( explode('','asdasd') );

//Warning: explode(): Empty delimiter in /tmp/e80c9663-e392-4f81-8347-35726052678f/code on line 3

//bool(false)

split

(PHP 4, PHP 5)

split — 用正则表达式将字符串分割到数组中

注意的是上面并没有PHP 7,也就是说split函数并不支持PHP 7.

 代码如下 复制代码

$date = "04/30/1973";

list($month, $day, $year) = split ('[/.-]', $date);

echo "Month: $month; Day: $day; Year: $year
\n";

//PHP 7 下的报错

Fatal error: Uncaught Error: Call to undefined function split() in /tmp/4d38c290-b4cb-43f5-846a-9fa90784a090/code:4

Stack trace:

#0 {main}

thrown in /tmp/4d38c290-b4cb-43f5-846a-9fa90784a090/code on line 4

//PHP 5.6 下返回正常

Month: 04; Day: 30; Year: 1973

split的第一个参数为正则表达式,也就是说,如果想要匹配特殊字符,需要转义一下。

 代码如下 复制代码

$arr='2016\8\11';

$rearr = split ('[/\]', $arr);

var_dump($rearr)

/*

array(3) {

[0]=>

string(4) "2016"

[1]=>

string(1) "8"

[2]=>

string(2) "11"

}

*/

也正是因为要使用正则表达式 pattern 的语法,所以搜索的速度不会很快。

preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比 split() 更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费

可能效率的原因导致了PHP 7 中直接放弃了这个函数吧。

explode php 报错,PHP函数explode和split的区别相关推荐

  1. 关于vs在.cpp提取头文件运行的时候一直报错“xx函数主体重定义”

    .....本来把主函数的一些封装的函数放到头文件里面的,结果编译运行在主函数调用的时候头文件一直报错"xxxx函数"已经有主体, cpp文件就说我调用的头文件的函数名是未识别的标识 ...

  2. explode php 报错,ecshop在php5.4下报错怎么办

    ecshop在php5.4下报错的解决办法:1.打开"cls_template"文件,并修改"$tag_sel=array_shift(explode(' ',$tag) ...

  3. MATLAB2020a报错:函数或变量 ‘svmtrain‘ 无法识别。

    版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/108594259 遇到 ...

  4. java drawimage报错,drawImage函数怎么用?

    drawImage函数怎么用? 大家好.我是新手哦!我准备学java,但是最近有个问题一直让我很郁闷.想请教一下各位前辈. 在绘画图片(应用drawImage函数),我是怎么样也绘画不出,编译运行都没 ...

  5. vue 外部方法调用内部_vue函数内部调用外部函数,报错外部函数不是函数

    zeroFill (num,len,radix) { let str = num.toString(radix || 10); while (str.length < len) { str = ...

  6. php使用hset报错,redis中set和hset的区别和使用场景

    下面由redis教程栏目给大家介绍redis中set和hset的区别和使用场景,希望对需要的朋友有所帮助! redis中存数据时,到底什么时候用 hset 相比于 set 存数据时又有什么不一样? s ...

  7. Hive SQL 中ARRAY或MAP类型数据处理:lateral view explode()/posexplode()——行转列函数

    前言:在对表数据进行批量处理过程中,常常碰上某个字段是一个array或者map形式的字段,一列数据的该字段信息同时存在多个值,当我们需要取出该数组中的每一个值实现一一对应关系的时候,可以考虑使用lat ...

  8. Pikachu实验过程1(函数报错的信息)

    一.基于函数报错的信息获取 1.常用报错函数updatexml().extractvalue().floor() 2.(select/insert/update/delete) 技术思路: 在MYSQ ...

  9. Unity查安卓Native Crash的方法,定位SO报错函数

    这边需要用到两个工具Il2CppDumper和IDA_Pro,网上可以下到对应的软件 日志分析 下面是出错的日志 01-17 18:03:54.146267 20882 21037 E Android ...

最新文章

  1. 如何反转 Python 中的字符串
  2. error while loading shared libraries:libmysqlclient.so.18 错误
  3. C语言内存/指针相关
  4. SQL Server 2005远程连接连不上的解决办法收藏 Microsoft给的方法
  5. 在写代码过程中遇到的问题,以及当时的解决方法(如实记录)
  6. 【C语言】成绩统计(结构)
  7. python什么是堆什么是栈_python中堆和栈_Python小知识00002
  8. hdu3949(线性基,求第k小的异或和
  9. 从零开始学 Web 之 JS 高级(二)原型链,原型的继承
  10. Median(查找中位数)
  11. TensorFlow案例---概率学中的逆概率
  12. MF,PMF算法比较
  13. mysql学习记录_秦路天善智能Mysql学习笔记
  14. mui赋值_mui input用法
  15. 龙迅LT6711|CS5801替代LT6711|HDMI转DP转换器芯片设计方案
  16. 链表实现c语言通讯录管理系统,C++链表实现通讯录管理系统
  17. 苹果笔记本上网很慢怎么回事?macbook无线上网慢的解决方法
  18. 【ONTAK2015】【BZOJ4298】Bajtocja
  19. 小白用python语言做自动化起步篇3 IF条件语句 记法:如果条件,否则
  20. Ubuntu 13.04下安装QQ2012

热门文章

  1. python可视化lassocv特征筛选之后的特征的相关性分析热力图
  2. 并发、并行、串行、同步、异步、阻塞、非阻塞
  3. python使用正则表达式删除字符串中的其它字符只保留数字和字母
  4. 什么是textCNN? 能用来做什么?结构是什么?
  5. protobuf和socket通信简单实例
  6. 生物学重复吗?还有技术重复?
  7. tensorflow中的tf.summary.image
  8. 【论文写作分析】之一 《基于混合注意力Seq2seq模型的选项多标签分类》
  9. 时间序列(二)数据重采样
  10. CNN模型 INT8 量化实现方式(一)