【问题标题】:How to map two array in php so that to get a combined array as a result?如何在php中映射两个数组以便得到一个组合数组?
【发布时间】:2016-08-17 04:22:17
【问题描述】:

我有两个数组,像这样,

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"];

注意:第二个数组 $values 的长度总是等于或小于第一个数组 $form_field_combined 。

现在我想要实现的是,将这两个数组组合成一个数组,使其看起来像这样。

$new_array = ["920"=>"Answer", "921"=>"", "922" => "", "923"=>"", "924" => "Option", "925" => "", "926"=>"Something Awesome"];

我的解决方案是使用这样的array_map:

            $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 数组,以便我可以在其他地方使用它,在我的情况下它不起作用。

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

【问题讨论】:

    标签: php arrays algorithm data-structures


    【解决方案1】:

    这样就可以了。

    $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, ........] 的内容,则它不会保留在最终数组中,结果。它是 ["926" => ],而它的值为 0。
    • 由于使用了 !empty,这就是为什么不保留 0 的原因。您可以使用 isset 代替,0 将被保留,
    • 是的,确实有效。非常感谢你。我不知道,为什么我什至在考虑 array_map。该死的
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多