2013-07-05 72 views
0

我有像下面从另一个阵列

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()但没有成功。

请帮忙提前

+1

在这里展示您的愿望输出数组 –

+0

请参阅upd “DeptX”是什么类型的问题 –

+0

?您只能使用数字和字符串作为数组中的键。 – Dahaka

回答

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()

+0

它给出错误两个参数应该有相同数量的元素。 –

+0

然后请任何其他解决方案。 –

+0

@ 1 -------用你正在使用的* actual *数组更新你的问题将是一个好开始 –

-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> 
-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 
     ) 

) 
+0

反对?这里有什么不对吗? –

+0

我认为,人们看到你的回答与杰克相同,所以他低估了你的意见。但是还有一件事,这个答案只对具有相同值的数组有效。而且我的数组在某些情况下也有不同的值 –