php 深层多维数组转换为一位数组

php 深层多维数组转换为一位数组

  1. 调用 php 数组函数 array_walk_recursive 递归获取深层数组的键值, 但无法获取属于数组的键名
/**
 * 深层多维数组转换为一位数组,并保留键名
 * @param array $arr 多维数组
 * @return array
 */
function deep_multi_to_single(array $arr)
{
    $result = [];
    array_walk_recursive($arr, function ($value, $key) use (&$result) {
//        array_push($result, $value);//不保留键名
        $result[$key] = $value;//保留键名
    });
    return $result;
}
  1. 手动处理获取递归深层数组的逻辑操作, 可以完全获取属于数组的键名 ,根据需要操作。
/**
 * 深层多维数组转换为一位数组,并保留键名
 * @param array $arr 多维数组
 * @return array
 */
 function deep_multi_to_single(array $arr)
 {
    $keys = [];
    $vals = [];
    $data = multi_to_two($arr);
    foreach ($data as $key => $val) {
        foreach ($val as $k => $v) {
            $keys[] = $k;
            $vals[] = $v;
        }
    }
    return array_combine($keys, $vals);
}

/**
 * 多维数组转换为二维数组
 * @param array $data 多维数组
 * @return mixed
 */
function multi_to_two(array $data = [])
{
    static $array;
    if (is_array($data)) {
        foreach ($data as $k => $p) {
            if (is_array($p)) {
                multi_to_two($p);
            } else {
                $array[] = array($k => $p);
            }
        }
    }
    return $array;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值