无法按键删除或取消设置数组中的特定项目

以下是我的数组输出。


Array

(

    [0] => Array

        (

            [id] => 1011

            [user_id] => 168

            [item_id] => 831

            [post_content] => My New Post 20

            [parent_comment_id] => 1010

            [name] => a

            [children] => Array

                (

                    [0] => Array

                        (

                            [id] => 1012

                            [user_id] => 168

                            [item_id] => 831

                            [parent_comment_id] => 1011

                            [name] => a

                            [children] => Array

                                (

                                    [0] => Array

                                        (

                                            [id] => 1013

                                            [user_id] => 179

                                            [item_id] => 831

                                            [parent_comment_id] => 1012

                                            [name] => a

                                            [children] => Array

                                                (

                                                    [0] => Array

                                                        (

                                                            [id] => 1014

                                                            [user_id] => 168

                                                            [item_id] => 831

                                                            [parent_comment_id] => 1013

                                                            [name] => a

                                                        )


                                                )


                                        )


                                )


                        )


                )


        )


)

桃花长相依
浏览 98回答 2
2回答

慕无忌1623718

这只涉及对递归函数的轻微更改。我添加了一个新参数,用于标记这是否是树的基础。在代码将新节点添加到树中之前,如果它不是基础节点,它将首先删除所需的元素。随后的调用都传入 false,以标记它不是碱基调用...function createTree(&$list, $parent, $base = true){    $tree = array();    foreach ($parent as $k=>$l){        if(isset($list[$l['id']])){            $l['children'] = createTree($list, $list[$l['id']], false);        }        if ( ! $base )  {            unset($l['item_id']);            unset($l['parent_comment_id']);            unset($l['name']);        }        $tree[] = $l;   }    return $tree;}

蝴蝶不菲

您可以在子项中使用标志进行删除,如下所示:$arr = array(&nbsp; array('id'=>1011, 'user_id' => 168, 'item_id'=>831, 'post_content'=>'My New Post 20', 'parent_comment_id'=>1010, 'name'=>'a'),&nbsp; array('id'=>1012,'user_id' => 168, 'item_id'=>831 ,'parent_comment_id'=>1011, 'name'=>'a'),&nbsp; array('id'=>1013, 'user_id' => 179, 'item_id'=>831, 'parent_comment_id'=>1012, 'name'=>'a'),&nbsp; array('id'=>1014,'user_id' => 168, 'item_id'=>831, 'parent_comment_id'=>1013, 'name'=>'a'),);echo "<pre> add";print_r($arr);$new = array();foreach ($arr as $a){&nbsp; &nbsp; $new[$a['parent_comment_id']][] = $a;}$tree = createTree($new, array($arr[0]));print_r($tree);function createTree(&$list, $parent, $isChild = false){&nbsp; &nbsp; $tree = array();&nbsp; &nbsp; foreach ($parent as $k=>$l){&nbsp; &nbsp; &nbsp; &nbsp; if(isset($list[$l['id']])){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $l['children'] = createTree($list, $list[$l['id']], true);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($isChild) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($l['item_id']);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // unset another field&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; $tree[] = $l;&nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; return $tree;}
打开App,查看更多内容
随时随地看视频慕课网APP