2012-02-04 24 views
8

Ben php'de bir şeyler yapıyorum ve hata ayıklama modunu kullanmıyorum. Bu yüzden, ben her türlü karakter dizisine erişmeyi denediğimde hata bildirimi nedeniyle bana hata veriyor. php hata bildirimi Başlatılmamış dize ofseti: 0

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

düzenlendi:

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

nasıl dev modunda çalışmak için yapmalıdır. Error_reporting'e (E_ALL) ihtiyacım var; peşin

teşekkürler.

+0

Biraz daha fazla kod güzel olurdu. Cümle değişkenini daha önce kullanıyor musunuz? –

+0

Elbette. Sadece düzenledim. – Elbek

+0

sadece iyi çalışır: http://ideone.com/R6y3n – mpen

cevap

18

Boş bir dize için, $sentence[0]'u kullanamazsınız, bu, bildirimde bulunmanıza neden olur.

Boş olup olmadığını kontrol etmek için !empty($sentence)'u ekleyebilirsiniz.

+0

aslında dosyadan dizeleri demet ayırıyordum. Yani dosya boş değildi. Dize parçaları çok vardı ama yöntem için bazı boşluklar nedeniyle boş bir dize geldi ve hata verdi. Bu benim kötüm. Sadece kontrol ettim ve fark ettim. tx. – Elbek

+0

Boş olan sorun, boş olanın ("0") da doğru olması. –

+0

@KeVin programatik olarak 0 ve boş farklıdır, boş ise sıfırdır, sıfır ise geçerli bir değerdir. –