Как установить идентификатор в многомерном массиве согласно родительско-дочерним отношениям - PullRequest
0 голосов
/ 04 мая 2019

У меня есть многомерный массив в формате Parent-Child.

Я хочу добавить новый идентификатор в массив.Новый идентификатор 'TTID' будет установлен в порядке Parent-Child.Это означает, что если ParentTTID равно 1, то дочерний TTID должен быть 2, а его дочерний - 3.

Таким образом, он имеет порядок Parent->Child->CHild.с неограниченными уровнями глубины.Теперь идентификатор узла New Parent будет начинаться с идентификатора последнего потомка, скажем, 4, а его потомка будет 5 и т. Д.

Array
(
    [0] =Array
        (
            [id] =0
            [value] =Total Income
            [parent] =-1
            [ttid] =1
            [children] =Array
                (
                    [0] =Array
                        (
                            [id] =2
                            [value] =Total Contributions
                            [parent] =0
                            [ttid] =0
                            [children] =Array
                                (
                                    [0] =Array
                                        (
                                            [id] =5
                                            [value] =Total Employers Contributions
                                            [parent] =2
                                            [ttid] =0
                                            [children] =Array
                                                (
                                                    [0] =Array
                                                        (
                                                            [id] =10
                                                            [value] =Employes unclassfied Contributions
                                                            [parent] =5
                                                            [ttid] =0
                                                        )

                                                )

                                        )

[1] =Array
    (
        [id] =1
        [value] =Total Expenses
        [parent] =-1
        [ttid] =0
        [children] =Array
            (
                [0] =Array
                    (
                        [id] =4
                        [value] =Total Benifit Payments
                        [parent] =1
                        [ttid] =0
                        [children] =Array
                            (
                                [0] =Array
                                    (
                                        [id] =9
                                        [value] =Directly to Participant
                                        [parent] =4
                                        [ttid] =0
                                        [children] =Array
                                            (
                                                [0] =Array
                                                    (
                                                        [id] =14
                                                        [value] =Some participant
                                                        [parent] =9
                                                        [ttid] =0
                                                    )

                                            )

                                    )

                            )

                    )

            )

    )

)

Я пытался решить эту проблему с помощью метода, в который отправляю1 идентификатор родительского узла за раз, чтобы все его дочерние элементы были отмечены.Тем не менее, это не похоже на работу, и это также дает мне предупреждение: невозможно использовать скалярное значение в качестве массива в строке

function treetable_markRowChildren($elements,$parentId,$new_id)
{
  $i = 1; $arr=array();
    foreach ($elements as $element)
    {
        if ($element['parent'] == $parentId)
          $element['ttid'] = $new_id+$i; // The Error is shown in this line
          $i=$i+1;
          $new_id=$element['ttid'];

         if(isset($element['children']))
             {
             $parentId=$element['id'];
            $arr2= treetable_markRowChildren($element,$parentId,$new_id);
         }
        else
             break; //No CHildren

      $arr=$element;

    }

  return $arr;
}

Я просто хочу, чтобы TTID был установлен в этом последовательном формате,Как мне этого добиться?Заранее спасибо.

Array
(
    [0] =Array
        (
            [id] =0
            [value] =Total Income
            [parent] =-1
            [ttid] =1
            [children] =Array
                (
                    [0] =Array
                        (
                            [id] =2
                            [value] =Total Contributions
                            [parent] =0
                            [ttid] =2
                            [children] =Array
                                (
                                    [0] =Array
                                        (
                                            [id] =5
                                            [value] =Total Employers Contributions
                                            [parent] =2
                                            [ttid] =3
                                            [children] =Array
                                                (
                                                    [0] =Array
                                                        (
                                                            [id] =10
                                                            [value] =Employes unclassfied Contributions
                                                            [parent] =5
                                                            [ttid] =4
                                                        )

                                                )

                                        )



    [1] =Array
        (
            [id] =1
            [value] =Total Expenses
            [parent] =-1
            [ttid] =4
            [children] =Array
                (
                    [0] =Array
                        (
                            [id] =4
                            [value] =Total Benifit Payments
                            [parent] =1
                            [ttid] =6
                            [children] =Array
                                (
                                    [0] =Array
                                        (
                                            [id] =9
                                            [value] =Directly to Participant
                                            [parent] =4
                                            [ttid] =7
                                            [children] =Array
                                                (
                                                    [0] =Array
                                                        (
                                                            [id] =14
                                                            [value] =Some participant
                                                            [parent] =9
                                                            [ttid] =8
                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...