本文目录一览:
- 1、php 二维数组过滤相同的值
- 2、PHP 关联数组操作太麻烦,试试 WPJAM Basic 内置的数组处理函数
- 3、php中一维或多维数组去除重复项
- 4、php 如何去除多维数组指定重复出现的值
- 5、php 一个多维数组根据一维数组筛选数据,得到新数组
php 二维数组过滤相同的值
$tmp=array();
$s=array();//你的数组
foreach($s as $k=$v){
if(in_array($v['name'],$tmp)){
unset($s[$k]);
}
$tmp[]=$v['name'];
}
var_dump($s);
PHP 关联数组操作太麻烦,试试 WPJAM Basic 内置的数组处理函数
PHP 有很多非常好用的数组处理函数,PHP 数组函数官方文档都有 80 多个,但是在使用过程,有一些数组的操作使用比较多,我就把这些函数整理成工具函数,然后整合到 WPJAM Basic 中,方便自己的二次开放时候使用,现在整理放出来,如果你和我一样基于 WPJAM Basic 进行二次开发,也可以使用:
PHP 从关联数组中移除指定的键值对,一般使用 unset 函数,比如:
如果要移除多个键值对,就要调用多次的 unset 函数,所以就合并成一个函数 :
这样就可以通过下面方式移除键值对了:
如果仅仅移除一个键值对,还可以直接传递字符串:
我们使用 array_filter 对数组进行过滤的时候,是不会递归调用的,意思如果其中元素也是数组的时候,是不会进行同样的过滤的操作。
输出结果为:
但是我们在一些数据处理的时候,比如后台字段提交的时候,我们希望过滤掉 null 的值,如果元素也是一个关联数组的时候,我们希望关联数组元素中的 null 的值也会过滤掉。所以我们就写了 wpjam_array_filter 这个函数,实现 array_filter 递归调用:
同样的数组:
输出结果为:
PHP 的 array_filter() 函数让我们可以通过回调函数来过滤数组,但是返回的是过滤后的数组,但是很多时候,我们只是简单的要求 返回过滤之后数组的第一个元素 :
使用非常简单的:
如果我们要合并的数组是多维的关联数组,那么使用 array_merge_recursive() 函数进行合并的话,不会进行键名覆盖,而是将多个相同键名的值递归合并成一个数组。
输出结果:
其实我们希望子数组里面的相同的值覆盖,据此我们写了一个函数,用来深度合并多维数组:
相同的数组进行合并:
得到的结果是:
一般不推荐使用 wpjam_array_merge 对多维索引数组进行合并。
要从关联数组中移除并返回指定的键值,一般需要两步操作,先取出,然后 unset 数组中的键值对:
如果每次都这么操作,有点烦人,所以就把这两个步骤合成一个函数,并且还可以设置数组中无此键对应的元素的时候的默认值。
然后直接调用即可:
PHP 关联数组可以通过三种方式插入新元素:
由此可见,关联数组插入元素是无法指定位置的,只能插在最前或者最后面,所以这个函数就是实现 向关联数组插入 元素时候指定的 Key 之前 :
比如下面在 $columns 的 'author' 之前插入 ['page_title'='页面标题'] :
php中一维或多维数组去除重复项
方案一
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
$arr1 = array_flip($arr);
$arr2 = array_flip($arr1);
print_r($arr2);
方案二
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
$a = array_count_values($arr);
$b = array_keys($a);
print_r($b);
方案三
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
foreach($arr as $k=$v){
$arr1[$v] = $k;
$arr2 = array_flip($arr1);
}
print_r($arr2);
方案四
$arr = array("0a","1b","2c","3d","4e","5f","6g","0a","2c","4e","6g","6g");
$arr1 = array_unique($arr);
print_r($arr1);
都是刚刚我实验出来的 都可以封装起来用递归实现多维去掉重复项
php 如何去除多维数组指定重复出现的值
array_unique
()
函数用于移除数组中重复的值。如果两个或更多个数组值相同,只保留第一个值,其他的值被移除。
注意:被保留的数组将保持第一个数组项的键名类型
php 一个多维数组根据一维数组筛选数据,得到新数组
?php
// 定义数组 1
$arr1 = array(
'BL001' = array(
'0' = 'A14257',
'1' = 'B17548'
),
'CDF002' = array(
'0' = 'A14257',
'1' = 'C48751'
),
'FGE453' = array(
'0' = 'DF5533',
'1' = 'GR6445',
'2' = 'GH5544'
),
'GEN001' = array(
'0' = 'NT7532',
'1' = 'DE9342',
'2' = 'C48751'
)
);
// 定义数组 2
$arr2 = array(
'A14257',
'E453T4',
'Y64344',
'FG4809',
'C48751',
'H4443R'
);
// 定义结果数组 $result
$result = array();
foreach ( $arr1 as $k = $v ) // 遍历数组 1
foreach ( $v as $s ) // 遍历数组 1 第 2 维
if ( in_array( $s, $arr2 ) ) { // 包含数据 2 的任意值
if ( ! isset( $result[$k] ) || ! is_array( $result[$k] ) )
$result[$k] = array();
$result[$k][] = $s; // 添加到结果数组
}
// 输出测试结果
print_r( $result );
/*
Array
(
[BL001] = Array
(
[0] = A14257
)
[CDF002] = Array
(
[0] = A14257
[1] = C48751
)
[GEN001] = Array
(
[0] = C48751
)
)
*/