逗号分割的字符串去重方法(explode,implode)

最近碰到序列化表单提交后获得数据的ID有重复现象,如下图:

操作CURD前,要去掉重复的ID才行

1 $group_name = json_encode(I('post.')); //解析序列化提交的表单数据
2 preg_match('/"d.*"/', $group_name, $id); //取数字ID的部分
3 $arr = array('"' => ''); //去掉"号方便框架CURD处理
4 $id = strtr($id[0], $arr); //获取以,号分割的id字符串
5 $ids = implode(',',array_unique(explode(',',$id))); //去掉重复的ID

 在这里用到两个函数:

1.implode  

定义和用法

implode() 函数返回一个由数组元素组合成的字符串。

注释:implode() 函数接受两种参数顺序。但是由于历史原因,explode() 是不行的,您必须保证 separator 参数在 string 参数之前才行。

注释:implode() 函数的 separator 参数是可选的。但是为了向后兼容,推荐您使用使用两个参数。

注释:该函数是二进制安全的。

语法

implode(separator,array)
参数描述
separator 可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。
array 必需。要组合为字符串的数组。
 
1 <?php
2     $arr = array('Hello','World!','Beautiful','Day!');
3     echo implode(" ",$arr);
4 ?>
5 //Hello World! Beautiful Day!

 2.explode

定义和用法

explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。

注释:"separator" 参数不能是一个空字符串。

注释:该函数是二进制安全的。

 1 <?php
 2     $str = "www.runoob.com";
 3     print_r (explode(".",$str));
 4 ?>
 5    // Array
 6    // (
 7    // [0] => www
 8    //[1] => runoob
 9    // [2] => com
10    // )

语法

explode(separator,string,limit)

 

参数描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的数目。

可能的值:

  • 大于 0 - 返回包含最多 limit 个元素的数组
  • 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
  • 0 - 会被当做 1, 返回包含一个元素的数组

技术细节

返回值: 返回字符串数组。
PHP 版本: 4+
更新日志: 在 PHP 4.0.1 中,新增了 limit 参数。在 PHP 5.1.0 中,新增了对负数 limits 的支持。
原文地址:https://www.cnblogs.com/cuculus/p/7007715.html