在项目中常常会遇到批量操作的事 比如 批量移动文章,批量删除等等。
如果是复选框选择的还好,但是如果是手动输入的,就需要我们进行处理。过滤掉其他无用的数据。
方法一:
<?php
$str = "1,2,2,23,2,5,8,1879,654 ,7,,57,,54,6,54";
$arr = array_values(
array_filter(
array_unique (
array_diff(
array_map(
"trim",
explode(",", $str)
),
array (""," "," ")
)
)
)
);
var_dump($arr);
数据处理过程
利用 explorer 函数 先对数据进行拆解
再利用 array_map 函数 对数组的每一个元素进行 去左右多余字符的操作
再利用 array_diff 函数 进行过滤 过滤掉不要的值 该函数本来是用来计算两个数组的差集的
再利用 array_unique 函数 过滤掉重复的数组
再利用 array_filter 函数 过滤值为空的元素
再利用 array_values 函数 返回数组的值
方法二:
<?php
$str = "1,2,2,23,2,5,8,1879,654 ,7,,57,,54,6,54";
preg_match_all("/(\d+)[\s|,]?/", $str, $arr);
$arr=array_unique($arr[1]);
var_dump($arr);
数据处理过程
利用正则匹配 获取数字
然后过滤掉重复值
在第二个方法中 如果我们对数组要进行进一步的加工处理 可以参考以下函数
array_filter() - 用回调函数过滤数组中的单元
array_map() - 将回调函数作用到给定数组的单元上
array_reduce() - 用回调函数迭代地将数组简化为单一的值