我至少有两个数组(实际上是四个以上):
$first_names = array(
'0' => 'Jon'
'1' => 'David'
);
$last_names = array(
'0' => 'Schumacher'
'1' => 'Johnson'
);
并且需要生产:
$full_names = array(
'0' => array('first' => 'Jon', 'last' => 'Schumacher')
'1' => array('first' => 'David', 'last' => 'Johnson')
);
不需要保留原始密钥(但当然,更愿意。需要为超过4个阵列这样做。
我很难找到"最佳"解决方案(可能会从每个解决方案中弹出,但这对我来说可能会产生错误)。
您应该尝试array_map:
$first_names = array(
'0' => 'Jon'
'1' => 'David'
);
$last_names = array(
'0' => 'Schumacher'
'1' => 'Johnson'
);
$full_names = array_map(function($first, $last) {
return compact('first', 'last');
}, $first_names, $last_names);
在关联数组中传递给merge
函数,在该函数中,每个键都对应于该数组的值将在每个结果项中映射到的值。
$allArrays = array(
"first" => $first_names,
"last" => $last_names
);
function merge($allArrays){
$result = array();
foreach($allArrays as $key=>$array){
addToResult($result, $key, $array);
}
return $result;
}
function addToResult(&$result, $arrayKey, $array){
foreach($array as $key=>$value){
if(!isset($result[$key])){
$result[$key] = array();
}
$result[$key][$arrayKey] = $value;
}
}
$full_names = merge($allArrays);
我对此的看法:
$full_names = array();
foreach( $first_names as $index => $f ) {
$full_names[] = array('first' => $f, 'last' => $last_names[$index]);
}