在多维数组中显示循环级别

时间:2018-07-07 16:11:58

标签: php loops recursion while-loop

我需要此递归的帮助。 我在php上,并且有这个数组树

    Array
    (
        [14|Erboristeria e Salute] => Array
            (
                [15] => Mal di gola e Cavo orale
                [16] => Tosse e vie respiratorie
                [17] => Naso irritato
                [18] => Digestione e Gonfiore addominale
                [19] => Emorroidi
                [20] => Riposo notturno
                [21] => Tono ed Energia
                [22] => Controllo del peso
                [23] => Benessere delle Gambe e Cellulite
                [24] => Depurazione
                [25] => Pomate
                [37] => Dolori muscolari e Mal di testa
                [53] => Igiene orale
                [55] => Monoconcentrati
                [58] => Stomaco e Intestino
                [60] => Menopausa
                [65] => Occhi irritati
                [66] => Difese dell'organismo
                [84] => Caramelle
                [87] => Colesterolo e funzionalità cardiovascolare
                [88] => Tisane
                [127] => Succhi Attivi 100%
                [130] => Cistite
                [131] => Candida
            )

        [154|Prodotti per la casa] => Array
            (
                [38|Profumatori d'ambiente] => Array
                    (
                        [40] => Essenze naturali
                        [44] => Puri oli essenziali
                        [45] => Diffusori con bastoncini Nasoterapia
                        [85] => Profumatori Spray
                        [105] => Brucia essenze
                        [118] => Lampade catalitiche e ricariche
                        [133] => Buste profumate
                        [142] => Diffusori ultrasuoni
                        [149] => Ricariche diffusori con bastoncini
                        [150] => Diffusori in ceramica
                        [152] => Profumatori per auto
                        [153] => Profumatori L'Amande
                    )

                [68] => Candele per ambiente
                [109] => Candele Cilindriche
                [123] => Prodotti naturali anti zanzare
                [132] => Prodotti per la cura del cane
                [181] => Idee regalo
            )

        [155|Cosmesi e Igiene] => Array
            (
                [6|Cura del viso] => Array
                    (
                        [54] => Aspersina Pharmalife - Bava di lumaca
                        [57|Linee Innoxa] => Array
                            (
                                [165] => Per pulire e stimolare
                                [166] => Linea idratazione giorno
                                [167] => Linea Autentica - rigenerante anti radicale
                                [168] => Super nutrimento con RNA e Omega3
                                [169] => Linea 41- pelle grassa, impura, acneica
                                [170] => Linea Couprosil - pelle sensibile e couperose
                                [171] => PG 33 - trattamento anti rughe
                                [172] => Linea Collagene - ritarda invecchiamento
                                [173] => Linea Naga - con sericina effetto tensore
                                [175] => Trattamenti intensivi rigeneranti
                            )

                        [61] => Contorno occhi
                        [63] => Pulizia Viso
                        [75] => Linea Olio Argan
                        [101] => Egasi Visage Amerigo
                        [102] => L'Amande Viso
                        [116] => Hyaluronic Bio Amerigo
                        [146] => Linea Activo 3 Oficine Cleman
                        [176] => Goji Bio Amerigo
                        [177] => Prodotti Flora Pisa
                        [178] => Viso Oficine Cleman
                        [179] => Acido Jaluronico
                    )

                [7|Cura dei Capelli] => Array
                    (
                        [82] => Capelli con forfora
                        [98] => Capelli normali
                        [99] => Trattamenti capelli
                        [100] => Pediculosi
                        [134] => Capelli lisci
                        [135] => Capelli ricci e mossi
                        [136] => Capelli colorati
                        [137] => Capelli secchi e sfibrati
                        [138] => Capelli delicati e lavaggi frequenti
                        [139] => Capelli grassi e pesanti
                        [140] => Anti caduta capelli
                        [143] => Balsamo
                        [144] => Gel per capelli
                    )

                [8|Cura del corpo] => Array
                    (
                        [29] => Igiene Intima
                        [30] => Cellulite e Tono Muscolare
                        [32] => Acque Profumate
                        [33|Creme corpo] => Array
                            (
                                [156] => Creme Corpo L'Amande
                                [157] => Creme Corpo Amerigo
                                [158] => Creme Corpo Speziali Fiorentini
                                [159] => Creme Corpo Oficine Cleman
                                [161] => Creme Corpo Flora Pisa
                                [162] => Creme Corpo Innoxa
                                [187] => Creme Dr Organic
                            )

                        [34] => Deodoranti
                        [36] => Oli vegetali corpo
                        [43] => Scrub
                        [77] => Prodotti per Ceretta
                        [160] => Oli profumati per il corpo
                    )

                [9] => Prodotti per l'uomo
                [10|Solari] => Array
                    (
                        [78] => Solari Innoxa
                        [79] => Solari L'Amande
                        [103] => Solari Amerigo
                        [180] => Solari Oficine Cleman
                    )

                [11] => Saponi vegetali e Detergenti liquidi
                [12|Prodotti per il bagno] => Array
                    (
                        [96] => Bagnoschiuma
                    )

                [13|Cura delle mani] => Array
                    (
                        [62] => Cura e Igiene Mani
                        [104] => Crema per le mani
                    )

                [26|Profumi] => Array
                    (
                        [125] => Eau de Parfum
                    )

                [27] => Prodotti per i bambini
                [28] => Cura dei piedi
                [49|Trucchi e Make Up] => Array
                    (
                        [50] => Rossetti Hydrating
                        [51] => Fondotinta
                        [52] => Ombretti
                        [81] => Smalti Innoxa
                        [92] => Lucida Labbra
                        [93] => Rossetto Fluido
                        [95] => Rosso Labbra Soft Touche
                        [117] => Mascara
                        [121] => Fard
                        [141] => Creme colorate viso
                        [186] => Rossetti Color Lip finish luxury Mat
                    )

                [59|Tinture per capelli] => Array
                    (
                        [128] => Naturidea
                        [147] => Henne in polvere
                        [184] => Mascara Henne
                    )

                [76] => L'Amande Eco Bio
                [83] => Candele da massaggio
                [94] => Stick Labbra
                [182] => Sapone Marino Naclean
            )

    )

我需要将此数组插入具有分层系统的db中。 因此,例如 14 | Erboristeria e Salute 具有1级,而 Mal di gola e Cavo orale 具有2级

以同样的方式, 154 | Prodotti per la casa 具有1级, 38 | Profumatori d'ambiente 具有2级和 Essenze naturali 级别为3 .........然后每个环境的烛光为级别2!

我该怎么做?我已经编写了此函数,并且可以正常工作,但是我不知道如何设置水平!

    function readDeep($nodo)
    {
        foreach ($nodo as $k=>$v)
        { 

            if (is_array($v))
            {
                echo "<div style='border:1px solid red; margin-bottom:2em'>";
                echo "<b>".$k." </b>";
                echo "<br />";
                readDeep($v);
                echo "</div>";

            }
            else
            {   
                echo $v;
                echo "<br />";
            }
        }
    }

谢谢

2 个答案:

答案 0 :(得分:1)

您需要将级别传递给函数,可以将其默认为第一级,然后在进行递归时将值传递回。因此定义变为...

function readDeep($nodo, $level = 1)

然后递归变为...

readDeep($v, $level+1);

答案 1 :(得分:0)

您可以简单地在递归函数中添加一个代表该级别的额外参数。首次调用它时,传入0(或根据口味,为1),然后递归调用时添加一个:

function readDeep($nodo, $level=0) {
    // ...
    readDeep($v, $level+1);
    // ...
}