如何在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将用空值填充最短的一个,使两个数组的长度相等