PHP将多个数组转换为一个关联数组 [英] PHP multiple arrays to one associative array

查看:91
本文介绍了PHP将多个数组转换为一个关联数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何合并这三个数组

$name ={"Tom", "John", "David"};
$v1 = {"Tom":100, "David":200};
$v2 = {"John":500, "Tom":400};

以两种不同方式转换为一个多维关联数组? 一种方法是键顺序应与数组名称"的键顺序相同.

into one multidimensional associative array in two different ways? One way is the key order should be same as that of array "name".

$name_merged_original_order = array (
    "Tom" => Array(
        "v1" => 100,
        "v2" => 400
    ),
    "John" => Array(
        "v1" => "N/A",
        "v2" => 500
    ),
    "David" => Array(
        "v1" => 100,
        "v2" => "N/A"
    )
)

另一种方式是按字母顺序排列数组名称":

Another ways is the alphabetical of array "name":

$name_merged_asc = array (
    "David" => Array(
        "v1" => 100,
        "v2" => "N/A"
    ),
    "John" => Array(
        "v1" => "N/A",
        "v2" => 200
    ),
    "Tom" => Array(
        "v1" => 100,
        "v2" => 400
    ),
)

棘手的部分是,数组"v1"和"v2"没有作为"name"的键排序.它们也没有名称"中的所有键.谢谢!

The tricky part is that array "v1" and "v2" is not ordered as the key of "name." They also don't have all keys as in "name." Thanks!

推荐答案

未经测试,最简单的解决方案:

It's not tested and the easiest solution:

$name_merged_original_order = array();
foreach($name as $key){
    $name_merged_original_order[$key] = array();
    if(array_key_exists($key, $v1)){
        $name_merged_original_order[$key]['v1'] = $v1[$key];
    }
    else{
        $name_merged_original_order[$key]['v1'] = 'N/A';
    }
    if(array_key_exists($key, $v2)){
        $name_merged_original_order[$key]['v2'] = $v2[$key];
    }
    else{
        $name_merged_original_order[$key]['v2'] = 'N/A';
    }
}

sort($name);
$name_merged_asc = array();
foreach($name as $key){
    $name_merged_asc[$key] = array();
    if(array_key_exists($key, $v1)){
        $name_merged_asc[$key]['v1'] = $v1[$key];
    }
    else{
        $name_merged_asc[$key]['v1'] = 'N/A';
    }
    if(array_key_exists($key, $v2)){
        $name_merged_asc[$key]['v2'] = $v2[$key];
    }
    else{
        $name_merged_asc[$key]['v2'] = 'N/A';
    }
}

这篇关于PHP将多个数组转换为一个关联数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆