Ciclare sottoarray teoricamente infiniti

motleyrulez

Nuovo Utente
30 Ott 2019
10
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?
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
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
        )

)
 

motleyrulez

Nuovo Utente
30 Ott 2019
10
0
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: 146

motleyrulez

Nuovo Utente
30 Ott 2019
10
0
1
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