最近碰到序列化表單提交后獲得數據的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 | 可選。規定所返回的數組元素的數目。 可能的值:
|
技術細節
返回值: | 返回字符串數組。 |
---|---|
PHP 版本: | 4+ |
更新日志: | 在 PHP 4.0.1 中,新增了 limit 參數。在 PHP 5.1.0 中,新增了對負數 limits 的支持。 |