PHP 通知: データの読み取り時に配列に未定義のオフセット: 1 があります 質問する

PHP 通知: データの読み取り時に配列に未定義のオフセット: 1 があります 質問する

次の PHP エラーが発生します:

PHP Notice:  Undefined offset: 1

これをスローする PHP コードは次のとおりです。

$file_handle = fopen($path."/Summary/data.txt","r"); //open text file
$data = array(); // create new array map

while (!feof($file_handle) ) {
    $line_of_text = fgets($file_handle); // read in each line
    $parts = array_map('trim', explode(':', $line_of_text, 2)); 
    // separates line_of_text by ':' trim strings for extra space
    $data[$parts[0]] = $parts[1]; 
    // map the resulting parts into array 
    //$results('NAME_BEFORE_:') = VALUE_AFTER_:
}

このエラーはどういう意味ですか? このエラーの原因は何ですか?

ベストアンサー1

変化

$data[$parts[0]] = $parts[1];

if ( ! isset($parts[1])) {
   $parts[1] = null;
}

$data[$parts[0]] = $parts[1];

または単に:

$data[$parts[0]] = isset($parts[1]) ? $parts[1] : null;

ファイルのすべての行にコロンが含まれているわけではないので、その行を爆発させるとサイズ 1 の配列が返されます。

によるとphp.net 可能な戻り値爆発する:

区切り文字によって形成された境界で文字列パラメータを分割して作成された文字列の配列を返します。

区切り文字が空の文字列 ("") の場合、explode() は FALSE を返します。区切り文字に文字列に含まれていない値が含まれており、負の制限が使用されている場合は、空の配列が返されます。それ以外の場合は、文字列を含む配列が返されます。

おすすめ記事