猿问

从多维数组中提取同名数组

我有一个来自表示表单的 json 的数组。我必须将所有 [components] 收集到一个新数组中

我解决了对 foreach 的认真处理,并在每个循环中使用了逻辑:

  1. 如果不存在数组“组件”-> 检查是否是类型列

    • 如果是,检查是否存在“组件”并保存在新数组中

    • 如果不保存在新数组中

  2. 如果再次存在,则对 3 或 4 个子级别应用与第 1 点相同的条件。

这是我需要的最后一个数组

Array

        (

            [0] => Array

                (

                    [key] => number1

                    [type] => number

                    [input] => 1

                    [label] => Test Number Field

                )


            [1] => Array

                (

                    [key] => testRadioFiled

                    [type] => radio

                    [label] => Test Radio Filed

                    [values] => Array

                        (

                            [0] => Array

                                (

                                    [label] => First

                                    [value] => first

                                    [shortcut] => 

                                )


                        )


                )


            ......


            [2] => Array

                (

                    [key] => testSelectMultipleField

                    [data] => Array

                        (

                            [values] => Array

                                (

                                    [0] => Array

                                        (

                                            [label] => First

                                            [value] => first

                                        )


                                    [1] => Array

                                        (

                                            [label] => Second

                                            [value] => second

                                        )



冉冉说
浏览 109回答 1
1回答

GCT1015

如果我理解你正确递归可以帮助:function extractComponents($arrayWithComponents){    $components = [];    if (!isset($arrayWithComponents['components']) || !is_array($arrayWithComponents['components'])) {        return $components;    }    foreach ($arrayWithComponents['components'] as $component) {        if (isset($component['columns'])) {            foreach ($component['columns'] as $column) {                $components = array_merge($components, extractComponents($column));            }        } else {            $components = array_merge($components, extractComponents($component));            unset($component['components']);            $components[] = $component;        }    }    return $components;}var_dump(extractComponents($data));
随时随地看视频慕课网APP
我要回答