2016-06-28 62 views
1

我想用存储在$aKeyNames中的文本等效替换$aValues中的所有数字键。使用另一个阵列中的值更新所有阵列键

$aKeyNames = array(0 => 'foo', 1 => 'bar'); 
$aValues = array(0 => 'foo content', 1 => 'bar content'); 

期望的输出;

$aValues = array('foo' => 'foo content', 'bar' => 'bar content'); 

为了达到这个目的,我写了下面的工作代码;

foreach ($aValues as $iPos => $aValue) { 
    $aValues[ $aKeyNames[$iPos] ] = $aValue; 
    unset($aValues[$iPos]); 
} 

我的问题是,$aValues是非常大的。有没有更有效的方法来实现这一目标?

+2

您的解决方案似乎不错,因为你要替换由其他阵列中的同一个键的值的关键。你可以使用'array_combine()',但你必须确保两个数组排序相同,所以键的顺序是一样的。 – Rizier123

+0

如果两个数组中都有相同的键,array_combine就是最好的方法。看看http://php.net/manual/en/function.array-combine.php –

+0

谢谢你的评论,我刚刚意识到我发布的错误,我只是在更新的问题上工作 – atoms

回答

2

参考手册array_combine

print_r(array_combine($aKeyNames, $aValues)); 
+2

沉默donwvoter。 –

+2

我想知道为什么这是被投票的,因为它似乎完全是OP所要求的?没有任何评论就没有任何帮助。 –

+1

我很好奇为什么这是downvoted。唯一的区别是我可以看到,OP的代码被限制为2个数组,并且使用的值在循环中未被设置。更低的内存占用? – jeroen