Ciclare sottoarray teoricamente infiniti

motleyrulez

Nuovo Utente
30 Ott 2019
11
0
1
Buongiorno a tutti, avrei bisogno di un aiuto per quanto riguarda un metodo. In pratica io ho una struttura di questo tipo:

[user]-> array
----[struttura] -> array
---------[dati] -> nome
---------[dati]-> cognome
---------[child]-> array
------------[dati]-> nome
------------[dati]->cognome
------------[child]->array
--------------[ecc] fino all'infinito teoricamente

Devo avere un contatore che , partendo da 1 in caso non vi sia alcun figlio, incrementi ogni volta che vi sia un figlio nella gerarchia. Per esempio se il padre ha due figli e questi ultimi hanno a loro volta 2 figli deve segnare il padre livello 3, i figli livello 2 e i nipoti livello 1. Esiste un metodo che scavi automaticamente la gerarchia all infiinito facendo appunto questo incremento?
 
incrementi ogni volta che vi sia un figlio nella gerarchia.
Fin qui tutto bene....

La perplessità nasce nel momento in cui costruisci l'array, nel caso sotto basta una ricorsione sull'ì-esimo elemento di "elements" costruendo a ritroso l'albero.
PHP:
$elements=
   [
      [
         'data'=>
            [
               'datum'=>[],
               'other'=>[],

            ],
         'child'=>
            [
               [
                  'data'=>
                     [
                        'datum'=>[],
                        'other'=>[],
                     ],
                  'child'=>[
                     [
                        'data'=>
                           [
                              'datum'=>[],
                              'other'=>[]
                           ],
                        'child'=>
                           [
                              'data'=>
                                 [
                                    'datum'=>[],
                                    'other'=>[]
                                 ],
                              'child'=>null
                           ]
                     ]
                  ]
               ],
               [
                  'data'=>
                     [
                        'datum'=>[],
                        'other'=>[],
                     ],
                  'child'=>[
                     [
                        'data'=>
                           [
                              'datum'=>[],
                              'other'=>[]
                           ],
                        'child'=>
                           [
                              'data'=>
                                 [
                                    'datum'=>[],
                                    'other'=>[]
                                 ],
                              'child'=>null
                           ]
                     ]
                  ]
               ],
            ]
      ],

   ];

private function recursive_Elements(&$data){
   foreach ($data as $k=>$v){
      if(isset($v[0]))$this->recursive_Elements($data[$k]);
      if(isset($v['child'])){
         ($v['child']!==null && !isset($data[$k]['count']))?$data[$k]['count']=1:$data[$k]['count']++;
         if($v['child']!==null && !empty($v['child']))$this->recursive_Elements($data[$k]);
      }
   }
}

Da qui un piccola funzioncina che permette il conto custom...
Il risultato parziale qui:
PHP:
Array
(
    [0] => Array
        (
            [data] => Array
                (
                    [datum] => Array
                        (
                        )

                    [other] => Array
                        (
                        )

                )

            [child] => Array
                (
                    [0] => Array
                        (
                            [data] => Array
                                (
                                    [datum] => Array
                                        (
                                        )

                                    [other] => Array
                                        (
                                        )

                                )

                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [data] => Array
                                                (
                                                    [datum] => Array
                                                        (
                                                        )

                                                    [other] => Array
                                                        (
                                                        )

                                                )

                                            [child] => Array
                                                (
                                                    [data] => Array
                                                        (
                                                            [datum] => Array
                                                                (
                                                                )

                                                            [other] => Array
                                                                (
                                                                )

                                                        )

                                                    [child] => 
                                                )

                                            [count] => 1
                                        )

                                )

                            [count] => 1
                        )

                    [1] => Array
                        (
                            [data] => Array
                                (
                                    [datum] => Array
                                        (
                                        )

                                    [other] => Array
                                        (
                                        )

                                )

                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [data] => Array
                                                (
                                                    [datum] => Array
                                                        (
                                                        )

                                                    [other] => Array
                                                        (
                                                        )

                                                )

                                            [child] => Array
                                                (
                                                    [data] => Array
                                                        (
                                                            [datum] => Array
                                                                (
                                                                )

                                                            [other] => Array
                                                                (
                                                                )

                                                        )

                                                    [child] => 
                                                )

                                            [count] => 1
                                        )

                                )

                            [count] => 1
                        )

                )

            [count] => 1
        )

)
 
Fin qui tutto bene....

La perplessità nasce nel momento in cui costruisci l'array, nel caso sotto basta una ricorsione sull'ì-esimo elemento di "elements" costruendo a ritroso l'albero.

[/PHP]

Sei stato un grande, ti metto in allegato la struttura esatta, mi adatteresti il metodo a quella struttura? fai conto che ["downline"]["structure"] è già la struttura dell'utente che è loggato in quel momento. quindi l'elemento 0 è già un figlio. e per chiamarla uso $response["downline"]["structure"]. Grazie in anticipo e scusami per il fastidio.
 

Allegati

  • Inkedindex_LI.jpg
    Inkedindex_LI.jpg
    334,9 KB · Visite: 324
Sei stato un grande, ti metto in allegato la struttura esatta, mi adatteresti il metodo a quella struttura? fai conto che ["downline"]["structure"] è già la struttura dell'utente che è loggato in quel momento. quindi l'elemento 0 è già un figlio. e per chiamarla uso $response["downline"]["structure"]. Grazie in anticipo e scusami per il fastidio.

Devo soltanto avere un contatore in una tabella che mi mostri il livello in gerarchia. livello più profondo sempre 1 e man mano che risali aumenta di 1.
 

Discussioni simili