如何在php中优雅地合并两个数组,将值存储在新键中
我至少有两个阵列(实际上是四个+): 并需要生产:如何在php中优雅地合并两个数组,将值存储在新键中,php,arrays,Php,Arrays,我至少有两个阵列(实际上是四个+): 并需要生产: $full_names = array( '0' => array('first' => 'Jon', 'last' => 'Schumacher') '1' => array('first' => 'David', 'last' => 'Johnson') ); 不需要保留原始密钥(但当然更愿意保留)。需要对4个以上的数组执行此操作 我很难找到“最佳”解决方案(每个解决方案都可能会弹出,但这对我来
$full_names = array(
'0' => array('first' => 'Jon', 'last' => 'Schumacher')
'1' => array('first' => 'David', 'last' => 'Johnson')
);
不需要保留原始密钥(但当然更愿意保留)。需要对4个以上的数组执行此操作
我很难找到“最佳”解决方案(每个解决方案都可能会弹出,但这对我来说可能会产生错误)。将关联数组传递给
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);
将关联数组传递给
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);
您应该尝试使用数组\u映射:
$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);
您应该尝试使用数组\u映射:
$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);
我的看法是:
$full_names = array();
foreach( $first_names as $index => $f ) {
$full_names[] = array('first' => $f, 'last' => $last_names[$index]);
}
我的看法是:
$full_names = array();
foreach( $first_names as $index => $f ) {
$full_names[] = array('first' => $f, 'last' => $last_names[$index]);
}
我们是否应该假设两个数组始终具有相同的长度?我们是否应该假设两个数组始终具有相同的长度?这是否适用于长度不相同的数组?当然。数组映射将使用空值填充最短的数组,以确保两个数组具有相同的长度这是否适用于长度不相同的数组?当然。数组映射p将用空值填充最短的一个,使两个数组的长度相等