13

ini 設定ファイル内にネストされた配列構造を持たせようとしています。私が持っている構造は次のとおりです。

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

しかし、これはうまくいきません。このタイプの構造が可能かどうか誰でも説明できますかparse_ini_file

可能であれば、何が間違っていますか?

4

4 に答える 4

49

このタスクには のセクション機能を使用できます。parse_ini_file

2 番目のパラメータを次のように設定してください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"
于 2013-01-30T22:19:04.697 に答える
17

ハード最大 3 つのレベルを作成できます。

<?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
        )
    )
    
)
于 2014-12-28T16:15:59.723 に答える
5

INIファイルはかなり制限されており、parse_ini_fileは完璧にはほど遠いです。このような要件がある場合は、他の構文を探す方がよいでしょう。

JSONはどうですか?PHPでのサポートには、ほぼ同じ快適さが備わっています。

$data = json_decode(file_get_contents($filename), TRUE);
file_put_contents($filename, json_encode($data));
于 2013-01-31T00:03:26.130 に答える
0

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 at gmail dot com 4 年前

于 2013-01-30T22:28:33.797 に答える