1. ホーム
  2. php

[解決済み] PHPのお知らせです。データ読み込み時の配列で未定義のオフセット:1

2022-03-04 10:17:06

質問

このような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_:
}

このエラーは何を意味するのでしょうか? このエラーの原因は何ですか?

解決方法を教えてください。

変更

$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;

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

によると php.netの可能な戻り値 エクスプロード :

文字列パラメータをデリミタで区切られた境界で分割した文字列の配列を返します。

デリミタが空文字列("")の場合、explode()はFALSEを返します。デリミタが文字列に含まれない値を含み、かつ負の制限値を使用した場合、空の配列を返します。 それ以外の場合は、文字列を含む配列が返されます。