PHP常用数组操作,建议收藏备用
文章目录
前言
提示:PHP常用数组操作,建议收藏备用:
平时收藏 和 记录的一些数组操作,可以提高开发效率
提示:以下是本篇文章正文内容,下面案例可供参考
一、有关合并某一字段键值相同的数组合并的改进
代码如下:原文
//合并某一字段键值相同的数组版本2.0
//参数说明:$array---传入的数组,$key---键值相同的键名,$newkey---合并后新的键名
function combine_same_val_v2($array,$key,$newkey=''){
foreach($array as $k=>$v){
foreach($array as $m=>$n){
if($v[$key]==$n[$key]){
$newkey?($new[$v[$newkey]][] = $array[$m]):($new[$k][] = $array[$m]);
unset($array[$m]);
}
}
}
return $new;
}
二、如何在数组中搜索并取出想要的数据
1.引入库
代码如下:
$arr=[
['gid'=>1,'class'=>'办公用品'],
['gid'=>2,'class'=>'办公用品'],
['gid'=>4,'class'=>'办公用品'],
['gid'=>6,'class'=>'办公用品']
];
$result=array_filter($data,function($item)use($key,$value){
if(is_array($value)){
return in_array($item[$key],$value);
}else{
return $item[$key]==$value;
}
});
PHP根据数据的value获取key
代码如下:
方式1:
array_keys(数组,查找值)
方式2:
array_search(查找值,数组)
该处使用的url网络请求的数据。
重置多维数组的索引
代码如下:原文
function reform_keys($array){
if(!is_array($array)){
return $array;
}
$keys = implode('', array_keys($array));
if(is_numeric($keys)){
$array = array_values($array);
}
$array = array_map('reform_keys', $array);
return $array;
};
二维数组转一维数组
代码如下:
function multi2array($array) {
static $result_array = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
multi2array($value);
}
else
$result_array[$key] = $value;
}
return $result_array;
}
对象转数组
代码如下:
function object_to_array($obj)
{
$obj = (array)$obj;
foreach ($obj as $k => $v) {
if (gettype($v) == 'resource') {
return;
}
if (gettype($v) == 'object' || gettype($v) == 'array') {
$obj[$k] = (array)object_to_array($v);
}
}
return $obj;
}
获取数组中重复数据
代码如下:原文
方法一:
<?php
function FetchRepeatMemberInArray($array) {
// 获取去掉重复数据的数组
$unique_arr = array_unique ( $array );
// 获取重复数据的数组
$repeat_arr = array_diff_assoc ( $array, $unique_arr );
return $repeat_arr;
}
// 测试用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );
?>
方法二:
<?php
function FetchRepeatMemberInArray($array) {
$len = count ( $array );
for($i = 0; $i < $len; $i ++) {
for($j = $i + 1; $j < $len; $j ++) {
if ($array [$i] == $array [$j]) {
$repeat_arr [] = $array [$i];
break;
}
}
}
return $repeat_arr;
}
// 测试用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );
?>
过滤多维数组重复项
代码如下:
/**
* 多维数组,根据某个特定字段过滤重复值
* @param array $arr 需要过滤值的原多维数组
* @param string $filterKey 被过滤的键值
* @return array
*/
function remove_duplicate($arr = [], $filterKey = '')
{
if (empty($arr) || empty($filterKey)) {
return $arr;
} else {
//声明一个目标数组
$res = [];
foreach ($arr as $item) {
//查看是否存在重复项
if (isset($res[$item[$filterKey]])) {
unset($item[$filterKey]); //存在,销毁
} else {
$res[$item[$filterKey]] = $item;
}
}
return $res;
}
}
提取多维数组中的指定 键名 数组
代码如下:
$_result = array();
function getArr($_list, $str){
global $_result; //引入外部定义的变量
foreach ($_list as $k=>$v){
if($k==$str && is_array($v) && !$v['table']){
$_result[] = $v;
}elseif (is_array($v)){
getArr($v, $str);
}
}
return $_result;
}
php数组中去除重复的value值
function array_unique_value($arr = array()){
array_multisort($arr, SORT_DESC, array_keys($arr));
print_r(array_unique($arr));
}
//多维转一维
代码如下:
function arrToOne($multi) {
$arr = array();
foreach ($multi as $key => $val) {
if( is_array($val) ) {
$arr = array_merge($arr, arrToOne($val));
} else {
$arr[] = $val;
}
}
return $arr;
}
将键名和键值设置为一样
代码如下:
//将键名设置成与键值一样
$areaList = array_combine(array_values($areaList), array_values($areaList));
将键值设置为与键名一样
代码如下:
//将键值设置为与键名一样
$areaList = array_combine(array_keys($areaList),array_keys($areaList));