Array nidificati nel file ini

Sto cercando di avere un array nidificato struttura all’interno di un ini file delle impostazioni. La struttura che ho è:

stuct1[123][a] = "1"
stuct1[123][b] = "2"
stuct1[123][c] = "3"
stuct1[123][d] = "4"

Ma questo non funziona. Qualcuno può spiegare se questo tipo di struttura è possibile con parse_ini_file

Se è possibile, che cosa sto facendo di sbagliato?

hai letto la documentazione? php.net/manual/en/function.parse-ini-file.php

OriginaleL’autore Marty Wallace | 2013-01-30

4 Replies
  1. 3

    I file INI sono limitati e la parse_ini_file è ben lungi dall’essere perfetto. Se avete requisiti come questo, è meglio cercare qualche altra sintassi.

    Che cosa circa JSON? È il supporto per il PHP viene fornito con quasi lo stesso comfort:

    $data = json_decode(file_get_contents($filename), TRUE);
    file_put_contents($filename, json_encode($data));
    Va aggiunto che i file ini sono supposti per essere umano scrivibili e leggibili a macchina. JSON file dovrebbero essere in macchina scrivibile e leggibile. Sono molto severe in termini di sintassi, piccoli errori di rendere l’intero file json non valido. Quasi nessun errore in un file ini che renderà il file non valido, solo la linea.

    OriginaleL’autore Josef Kufner

  2. 33

    È possibile utilizzare il funzione sezioni di parse_ini_file per questo compito.

    Assicurarsi di impostare il secondo parametro true:

    parse_ini_file("sample.ini", true);

    Non è esattamente il possibile per rendere il sub sezioni, ma si può fare un indicizzati sub matrice:

    [123]
    setting[] = "1"
    setting[] = "2"
    setting[] = "3"
    setting[] = "4"

    Analizzato è simile come thos

    [123][setting][0] => "1"
    [123][setting][1] => "2"
    [123][setting][2] => "3"
    [123][setting][3] => "4"
    questo dovrebbe essere accettato come risposta esattamente affronta la questione e non è una soluzione alternativa

    OriginaleL’autore Dan Lee

  3. 12

    È possibile creare un minimo di tre livelli. Forse di più, ma non so come fare.

    <?php
    
    define('BIRD', 'Dodo bird');
    
    $ini_array = parse_ini_file("sample.ini", true);
    echo('<pre>'.print_r($ini_array,true).'</pre>');
    
    ?>

    parse_ini_file.ini

    ; This is a sample configuration file
    ; Comments start with ';', as in php.ini
    
    [first_section]
    one = 1
    five = 5
    animal = BIRD
    
    [second_section]
    path = "/usr/local/bin"
    URL = "http://www.example.com/~username"
    second_section[one]="1 associated"
    second_section[two]="2 associated"
    second_section[]="1 unassociated"
    second_section[]="2 unassociated"
    
    [third_section]
    phpversion[] = "5.0"
    phpversion[] = "5.1"
    phpversion[] = "5.2"
    phpversion[] = "5.3"

    Uscita

    Array
    (
        [first_section] => Array
            (
                [one] => 1
                [five] => 5
                [animal] => Dodo bird
            )
    
        [second_section] => Array
            (
                [path] => /usr/local/bin
                [URL] => http://www.example.com/~username
                [second_section] => Array
                    (
                        [one] => 1 associated
                        [two] => 2 associated
                        [0] => 1 unassociated
                        [1] => 2 unassociated
                    )
    
            )
    
        [third_section] => Array
            (
                [phpversion] => Array
                    (
                        [0] => 5.0
                        [1] => 5.1
                        [2] => 5.2
                        [3] => 5.3
                    )
    
            )
    
    )
    Questa è la risposta migliore per me, come mostra quanti livelli si può utilizzare e conferma, inoltre, che le chiavi sono ammessi (non sapevo)

    OriginaleL’autore user1032531

  4. 0

    Qui è un altro modo per valori di gruppo nell’ini:

    mio.ini:

    [singles] 
    test = a test 
    test2 = another test 
    test3 = this is a test too
    
    [multiples] 
    tests[] = a test 
    tests[] = another 
    test tests[] = this is a test too

    my.php:

    La stessa:

    <?php 
    $init['test'] = 'a test';
    $init['test2'] = 'another test';
    $init['test3'] = 'this is a test too';
    $init['tests'][0] = 'a test';
    $init['tests'][1] = 'another test';
    $init['tests'][2] = 'this is a
    test too'; ?>

    Questo funziona con il valore impostato a true, inoltre, può essere utile con i passanti.
    Funziona con il valore impostato a true.

    http://php.net/manual/en/function.parse-ini-file.php

    Inviato da david dot dyess at gmail dot com 4 anni fa

    OriginaleL’autore Soroush Falahati

Lascia un commento