2012-02-04 10 views
8

sto facendo una roba in php e non si è in modalità di debug. Quindi, io sono noiphp segnalazione degli errori stringa non inizializzata offset: 0

error_reporting(E_ALL); 

ma Quando provo ad accedere a qualsiasi carattere di stringa mi dà errore a causa della segnalazione degli errori.

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

Modificato:

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

Come devo fare per lavorare in modalità dev. Ho bisogno di error_reporting (E_ALL);

grazie in anticipo.

+0

un po 'più di codice sarebbe bello. Utilizzi la variabile frase prima? –

+0

Certo uomo. Ho appena modificato. – Elbek

+0

corre bene: http://ideone.com/R6y3n – mpen

risposta

18

Per stringa vuota, non è possibile utilizzare $sentence[0], che farà sì che l'avviso che hai.

È possibile aggiungere !empty($sentence) per verificare se è vuota.

+0

effettivamente stavo analizzando un mucchio di stringhe dal file. Quindi il file non era vuoto. C'erano molti blocchi di stringhe, ma a causa di alcuni spazi per il metodo è venuto una stringa nulla e ha dato l'errore. È il mio cattivo Ho appena controllato e realizzato. tx. – Elbek

+0

Il problema con vuoto è che vuoto ("0") restituirà anche true. –

+0

@KeVin programmaticamente 0 e vuoto sono diversi, vuoto è assenza di dati mentre zero è un valore valido. –