2013-03-10 72 views
0

我有两个数组的键名其中之一包含一个新的密钥名称如何改变多维数组

$assoc = ['name', 'lastname', 'pesel']; 

和第二看这个

$inputs = ['John', 'Don', '987987', 'Mike', 'Evans', '89779' ]; 

阵列$assoc是新的键名,我想改变[0][1]['name']

array(2) { 
    ['person'] => 
    array(3) { 
    ['name'] => string(4) "John" 
    ['lastname'] => string(3) "Don" 
    ['pesel'] => string(6) "987987" 
    } 
    ['person'] => 
    array(3) { 
    ['name'] => string(4) "Mike" 
    ['lastname'] => string(5) "Evans" 
    ['pesel'] => string(5) "89779" 
    } 
} 

感谢您的帮助

+1

使用'array_chunk'在您的值列表上,然后使用'array_combine'将键绑定到每个块。 – mario 2013-03-10 16:10:01

+2

在一个阵列中不能有多个元素具有相同的密钥。后者将覆盖前者。所以'array('person'=> ...,'person'=> ...)'不会是包含两个元素的数组。 – 2013-03-10 19:53:18

+1

是的,你有权利:)我很愚蠢 – konadrian 2013-03-10 19:58:11

回答

-1
<?php 
$assoc=Array("name", "lastname", "pesel"); 
$inputs=Array('John', 'Don', '987987', 'Mike', 'Evans', '89779'); 

$resultant_array=Array(); 
for($i=0; $i<count($inputs); $i+=count($assoc)){ 
//echo $i."\n\n"; 
for($j=0; $j<count($assoc); $j++){ 

    $b2g[$assoc[$j]]=$inputs[$i+$j]; 
} 
$resultant_array[]=$b2g; 
} 

print_r($resultant_array); 

这是一个较为漫长的和一般用途..其实我已经使用很多recurssions ..

+1

奇怪的是,你喜欢这个答案我的...我假设你喜欢的东西混乱。 – silkfire 2013-03-10 21:13:24

+0

不,我喜欢用代码探索,而不是在Google上寻找它。两者都需要相同的时间 – Ronnie 2013-03-11 08:32:13

5

这很简单:

$new_array = array(); 

foreach(array_chunk($inputs, 3) as $person) { 
    $new_array[] = array_combine($assoc, $person); 
}