PHP | Uninitialized string offset エラーの原因と修正案

PHPで発生するエラー「Uninitialized string offset」が発生する原因と対処・修正案について紹介しています。

Warning: Uninitialized string offset xxx in ~
警告:初期化されていない文字列オフセット

Uninitialized string offset エラーの発生原因と修正案

「Uninitialized string offset」というPHPエラーは、主に配列やオブジェクトではなく文字列型の変数に対して存在しないキー名を指定した呼び出しをすると発生するエラーです。

このエラーは警告エラー(Warning)に分類されています。

例えば「Uninitialized string offset」エラーが発生する条件を満たしたサンプルコードは以下のようになります。

$a = 'PHP';
echo $a[5];

$aは文字列型であり、確かに$a[0]$a[1]「P」「H」を取得できますが、文字数より多い値を指定すると、このエラーが発生します。

「Uninitialized string offset」を修正するには、エラーの原因となっている変数が文字列型である事が正しいのか確認、必要であれば文字列を分割して配列に格納する、配列としての長さより大きな値をキー名に指定しないようにする必要があります。

配列に変換した場合は、array_key_exists()isset()でキー名の存在を確認して処理する事で解決できます。

$a = [1, 2, 3];
if (array_key_exists(5, $a)) {
	// キー名が存在する場合
}

また、配列に対して存在しないキー名を指定した場合は「Undefined array key」エラーとなり、文字列型や数値型ではない変数の場合は「Trying to access array offset on value of type ~」エラーなどが発生します。

PHP,PHP エラー

Posted by Yousuke.U