PHP常用数组操作

19 篇文章 0 订阅

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

代码如下:


方式1array_keys(数组,查找值)

方式2array_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));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

upcto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值