2012-02-04 15 views
8

estoy haciendo cosas en php y no es el modo de depuración. Entonces yo soy nosotrosinforme de errores de php Offset de cadena sin inicializar: 0

error_reporting(E_ALL); 

pero cuando intento acceder a cualquier caracter de cadena me da error debido a los informes de error.

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

Editado:

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

¿Cómo debo hacer para trabajar en el modo prog. Necesito el error_reporting (E_ALL);

gracias de antemano.

+0

un poco más de código sería bueno. ¿Usas la variable de oración antes? –

+0

Hombre seguro. Acabo de editar. – Elbek

+0

funciona bien: http://ideone.com/R6y3n – mpen

Respuesta

18

Para cadena vacía, no puede usar $sentence[0], que causará la notificación que recibió.

Puede agregar !empty($sentence) para comprobar si está vacío.

+0

en realidad estaba analizando un montón de cadenas del archivo. Entonces el archivo no estaba vacío. Hubo una gran cantidad de trozos de cadena, pero debido a algunos espacios para el método, vino cadena nula y dio el error. Es mi mal. Acabo de comprobar y me di cuenta. tx. – Elbek

+0

El problema con el vacío es que el vacío ("0") también devolverá verdadero. –

+0

@KeVin programmatically 0 y empty son diferentes, empty es ausencia de datos mientras que zero es un valor válido. –

Cuestiones relacionadas