猿问

如何在 php 中将数组合并/推入一个数组

代码


$result = [];

            foreach ($getAllAgent as $rkey => $rvalue) {

                $found = -1;

                for ($i = 0; $i < count($result); $i++) {

                    if ($result[$i]["brokerid"] == $rvalue["brokerid"]) {

                        $found = $i;

                        $result[$i]['get_agent_details'][] = $rvalue['get_agent_details']; //here to combine

                        break;

                    }

                }

                // if not found, create new

                if ($found == -1) {

                    $result[] = $rvalue;

                } 

结果


Array

    (

        [0] => Array

            (

                [id] => 2

                [brokerid] => 2

                [agentid] => 3

                [addedby] => 1

                [get_agent_details] => Array

                    (

                        [id] => 3

                        [name] => kenang

                        [ic] => 932132923

                        [phone] => 2313123

                        [0] => Array

                            (

                                [id] => 4

                                [name] => ivan

                                [ic] => 32992131

                                [phone] => 31231                        

                            )

                    )

            )

    )

我有一组数组,我循环它并根据 ID 重组匹配数据。之后我会尝试将相同的数据合并到一个数组中,我可以添加到一个数组中。但它不会合并为一个。正确的结果应该如下所示。

心有法竹
浏览 97回答 1
1回答

眼眸繁星

你的问题在这一行:$result[] = $rvalue;考虑你只有一件物品的情况;这将导致:Array(&nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [id] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [brokerid] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [agentid] => 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [addedby] => 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [get_agent_details] => Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [id] => 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [name] => Chesney Hawkes&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ic] => 932132923&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [phone] => 2313123&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; ))但为了保持一致,您需要get_agent_details成为一个项目列表,恰好有一个条目:Array(&nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [id] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [brokerid] => 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [agentid] => 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [addedby] => 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [get_agent_details] => Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [id] => 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [name] => Chesney Hawkes&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ic] => 932132923&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [phone] => 2313123&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; ))所以你需要重新安排你的数据,例如写:$rvalue['get_agent_details'] = [0 => $rvalue['get_agent_details']];$result[] = $rvalue;然后,因为get_agent_details当您遇到第二个匹配项时已经是一个列表,您在内部循环中的现有代码将做正确的事情:// Add an item to the list$result[$i]['get_agent_details'][] = $rvalue['get_agent_details'];
随时随地看视频慕课网APP
我要回答