用另一个数组中的Value替换数组的键

时间:2013-07-05 06:45:09

标签: php arrays

我有一个如下所示的数组结构

Array
(
    [1] => Dept1
    [2] => Dept2
    [3] => Dept3
)

我有另一个数组如下

Array
(
    [1] => Array
        (
            [user1] => 58
            [user3] => 75
        )

    [2] => Array
        (
            [user6] => 162
        )

    [3] => Array
        (
            [user7] => 2
            [user8] => 126
            [user9] => 148

        )
)

我想要

Array
    (
        [Dept1] => Array
            (
                [user1] => 58
                [user3] => 75
            )

        [Dept2] => Array
            (
                [user6] => 162
            )

        [Dept3] => Array
            (
                [user7] => 2
                [user8] => 126
                [user9] => 148

            )
    )

第二个数组中的数字是部门编号。它们的值存在于第一个数组中。我想用第一个数组中的值替换第二个数组中的部门号。

我尝试使用 array_replace(),但没有成功。

请帮忙

提前致谢

3 个答案:

答案 0 :(得分:4)

如果第二个数组的元素少于查找数组,或者键的顺序不同,则需要先映射键值,然后使用array_combine()组合数组。

array_combine(array_map(function($key) use ($depts) {
    return $depts[$key]; // translate key to name
}, array_keys($dept_values)), $dept_values));

否则,您可以立即将它们合并:

array_combine($depts, $dept_values);

另请参阅:array_map()

答案 1 :(得分:-1)

试试这个。基本上加入爆炸将完成您的工作。

<html>
<head>
<title>Copy to new array</title>
</head>
<body>
<?php
$dept= array('Dept1', 'Dept2', 'Dept3', 'Dept4');
$temp= join(",",$dept);
$department=explode(",",$temp);
echo "The first element in new array is: " . $department[0];
echo " and the second element in new array is: " . $department[1];
?>
</body>
</html>

答案 2 :(得分:-1)

此代码正如我所料:

PHP代码:

<?php
print_r(array_combine($firstArray, $secondArray));
?>

数组输出:

Array
(
    [Dept1] => Array
        (
            [user1] => 58
            [user3] => 75
        )

    [Dept2] => Array
        (
            [user6] => 162
        )

    [Dept3] => Array
        (
            [user7] => 2
            [user8] => 126
            [user9] => 148
        )

)