2012-02-04 12 views
8

私はPHPでものをやっていて、デバッグモードではありません。だから私は、私たちにPHPエラーを報告する初期化されていない文字列オフセット:0

error_reporting(E_ALL); 

をですが、私はそれは私にエラー報告に起因するエラーを与える文字列の任意の文字にアクセスしようとします。

$sentence = "Hello World"; 
$sentence[0] //Uninitialized string offset: 0 

編集:

public static function prepareSentence($sentence) 
{ 
    $sentence = trim($sentence); 
    if ($sentence[0] == '"') //Uninitialized string offset: 0 
     $sentence = substr($sentence, 1, strlen($sentence)); 

    if ($sentence[strlen($sentence) - 1] == '"') 
     $sentence = substr($sentence, 0, -1); 

    if ($sentence[0] == '"' || $sentence[strlen($sentence) - 1] == '"') 
     return self::prepareSentence($sentence); 
    return $sentence; 
} 

にはどうすればいいのdevのモードで動作するために行う必要があります。私はerror_reporting(E_ALL)が必要です。

ありがとうございます。

+0

もう少しコードがいいですね。前に文の変数を使用していますか? –

+0

確かな男。私はちょうど編集しました。 – Elbek

+0

はうまく動作します:http://ideone.com/R6y3n – mpen

答えて

18

空の文字列の場合は、$sentence[0]を使用することはできません。

!empty($sentence)を追加して、空であるかどうかを確認できます。

+0

実際に私はファイルから文字列の束を解析していました。そのファイルは空ではありませんでした。文字列チャンクがたくさんありましたが、メソッドのスペースによってはnull文字列が来てエラーが発生しました。それは私の悪です。私はちょうど確認し、実現しました。 tx。 – Elbek

+0

空の問題は、空( "0")もtrueを返すことです。 –

+0

@KeVinはプログラムによって0と空白が異なり、空ではデータがなく、ゼロが有効な値です。 –

関連する問題