Вложенные массивы в ini-файле

Я пытаюсь создать структуру вложенных массивов внутри файла настроек ini. У меня есть структура:

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

Но это не работает. Может ли кто-нибудь объяснить, возможен ли такой тип структуры с помощью parse_ini_file

Если это возможно, что я делаю неправильно?

Файлы INI довольно ограничены, и parse_ini_file далек от совершенства. Если у вас есть такие требования, вам лучше искать какой-то другой синтаксис.

Как насчет JSON ? Поддержка на PHP имеет почти такой же комфорт:

 $data = json_decode(file_get_contents($filename), TRUE); file_put_contents($filename, json_encode($data)); 

Вы можете использовать функцию разделов parse_ini_file для этой задачи.

Обязательно установите для второго параметра значение true :

 parse_ini_file("sample.ini", true); 

Невозможно создать подразделы, но вы можете сделать индексированный вспомогательный массив следующим образом:

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

Размышление выглядело бы похоже на thos

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

Вы можете создать минимум три уровня. Может быть, больше, но я не знаю, как это сделать.

 <?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" 

Вывод

 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 ) ) ) 

Вот еще один способ группировки значений в ini:

my.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:

Такой же как:

 <?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'; ?> 

Это работает с bool, установленным как true, может быть полезно с циклами. Работает с bool, установленным как true.

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

Отправленный david dot dyess в gmail dot com 4 года назад