2

これは私の設定ロードコードです:

    $WConfig;
    $lines = file($ToRootDirectory . 'config.txt', FILE_SKIP_EMPTY_LINES);
    foreach ($lines as $line_num => $line) {
        $line = trim($line);
        if (!(substr($line, 0, 1) == '#')){
            $WConfig[(trim(substr($line, 0, strpos($line, ":"))))] = trim(substr($line, strpos($line, ':') + 1));
        }
    }
    unset($lines, $line, $line_num, $temp);
    $host = $WConfig['mshost']; //line 11
    print_r($WConfig);          //line 12

この構成ファイルをロードします: (ANSI)

    #--/ MySQL:             //Dont forget to execute Install.sql ;)
    #      username:        //NOT NEEDED TO BE ROOT -> Acces to INSERT, UPDATE, SELECT, SHOW
    msusername:PHP_Default
    #      password:
    mspassword:php
    #      database:
    msdatabase:PHP_Default
    #      host:
    mshost:localhost
    #--/ Session:
    #       sessionend: Time in minutes when the session will be end from last acces. Default 20 minutes.

セッション終了:20

しかし表示:

Notice: Undefined index: mshost in C:\######\PHP\LoadConfig.php on line 11
Array ( [msusername] => PHP_Default [mspassword] => php [msdatabase] => PHP_Default [mshost] => localhost [sessionend] => 20 ) 

11 行目で「mshost」が見つからないためエラーが発生しますが、12 行目の配列を表示すると、「mshost」がまだ存在します。

この問題の答えを知っているのは誰ですか? この問題を解決するにはどうすればよいですか?

更新: msusername と mshost でのみ表示されます

回答: msusername と mshost を数字 -> 0 と 1 に変更しました。問題なく動作します。

4

1 に答える 1

0

構成ファイルは INI によく似ています。(実際には、= の代わりに : を除いて、INI とまったく同じです)

このような頭痛の種を避けるために、PHP の INI ロード ルーチンを使用することをお勧めします。

INI 形式のファイルは次のようになります。

; Use sections if you want
[MySQL]
;--/ MySQL:             //Dont forget to execute Install.sql ;)
;      username:        //NOT NEEDED TO BE ROOT -> Acces to INSERT, UPDATE, SELECT, SHOW
msusername = PHP_Default

;      password:
mspassword = php

;      database:
msdatabase = PHP_Default

;      host:
mshost = localhost

[Sessions]
;--/ Session:
;       sessionend: Time in minutes when the session will be end from last acces. Default 20 minutes.
于 2013-03-28T11:22:39.067 に答える