如何在php中映射两个数组,从而得到一个组合数组?

如何在php中映射两个数组,从而得到一个组合数组?,php,arrays,algorithm,data-structures,Php,Arrays,Algorithm,Data Structures,我有两个数组,类似这样的 form_field_combined = ["920" => "920", "921" => "921", "922" =>"922", "923" => "923", "924" => "924", "925" => "925", "926" => "926"]; $values = ["920"=>"Answer", "924" => "Option", "926"=>"Something Awesom

我有两个数组,类似这样的

form_field_combined = ["920" => "920", "921" => "921", "922" =>"922", "923" => "923", "924" => "924", "925" => "925", "926" => "926"];
$values = ["920"=>"Answer", "924" => "Option", "926"=>"Something Awesome"];
下一个数组是这样的

form_field_combined = ["920" => "920", "921" => "921", "922" =>"922", "923" => "923", "924" => "924", "925" => "925", "926" => "926"];
$values = ["920"=>"Answer", "924" => "Option", "926"=>"Something Awesome"];
注意:第二个数组$value的长度始终等于或小于第一个数组$form\u field\u的总和。

现在我想要实现的是,这两个数组的组合数组,所以看起来像这样

$new_array = ["920"=>"Answer", "921"=>"", "922" => "", "923"=>"", "924" => "Option", "925" => "", "926"=>"Something Awesome"];
我的解决方案是使用数组映射,如下所示:

            $form_data_values = [];
            $all_fields = array_map(function ($each, $key) use ($values, $form_data_values) {

                array_map(function ($each_value, $each_key) use ($each, $key, $values, $form_data_values) {

                    if (in_array($each, $values)) {
                        array_push($form_data_values, [$key => $values[$each]]);

                    } else {
                         array_push($form_data_values, [$key => ""]);
                    }
                    dd($form_data_values);   // The values are as expected and being preserved here.. 
                }, $values, $form_data_values);

                dd($form_data_values); // The value is lost now, and is blank.
            }, $values, array_keys($form_field_combined));
我希望$form_data_values数组能够被保留,这样我就可以在其他地方使用它,而在我的情况下,它是不起作用的

或者你可以看到预期的结果,并提出任何其他方法。谢谢

这样就可以了

$result = array();
foreach ($form_field_combined as $key => $val) {
    $result[$key] = !empty($values[$key]) ? $values[$key] : "";
}
为了保存0,请使用isset

$result = array();
    foreach ($form_field_combined as $key => $val) {
        $result[$key] = isset($values[$key]) ? $values[$key] : "";
    }
这就行了

$result = array();
foreach ($form_field_combined as $key => $val) {
    $result[$key] = !empty($values[$key]) ? $values[$key] : "";
}
为了保存0,请使用isset

$result = array();
    foreach ($form_field_combined as $key => $val) {
        $result[$key] = isset($values[$key]) ? $values[$key] : "";
    }

是的,哇,我想我对这个问题想得太多了。但是你能告诉我为什么值0没有被保留吗。例如,如果我有这样的东西[“926”=>0,…],那么它不会保留在最终数组result中。它的值为[“926”=>],而该值为0。因为!使用空,这就是为什么不保留0。您可以改为使用isset,0将被保留,是的,确实有效。非常感谢你。我不知道,为什么我会想到阵列图。妈的,哇,我想我对这个问题想得太多了。但是你能告诉我为什么值0没有被保留吗。例如,如果我有这样的东西[“926”=>0,…],那么它不会保留在最终数组result中。它的值为[“926”=>],而该值为0。因为!使用空,这就是为什么不保留0。您可以改为使用isset,0将被保留,是的,确实有效。非常感谢你。我不知道,为什么我会想到阵列图。该死