No es un gran fan de la supresión de errores aquí, excepto los scripts desechables o las instancias en las que realmente no hay una buena forma de detectar un error.
Permítanme explicar el comportamiento del error Uninitialized string offset
.No es un error:
Ejemplo # 1
$a = 0;
$b = $a['f5'];
$a
es un valor escalar numérico. En la segunda línea, PHP está emitiendo implícitamente este valor numérico a una cadena. La cadena '0'
tiene una longitud de 1.
En PHP puede buscar un carácter en una cadena utilizando un índice de matriz, ya que PHP almacena cadenas como matrices internamente. Por ejemplo:
$s= 'abcd';
print_r($s[1]);
La salida de este código se b
, ya que es el segundo carácter de la cadena. En el ejemplo n. ° 1, la búsqueda 'f5'
se está convirtiendo en un número ya que las cadenas solo se pueden indexar por posición del carácter. echo intval('f5');
nos muestra qué PHP interpreta la cadena 'f5'
como 0
en un contexto numérico.
¿Conmigo hasta ahora? Esto es lo que sucede cuando aplicamos esto al ejemplo # 2
Ejemplo # 2
$a = '';
$b = $a['f5'];
$a
es cadena de longitud cero. La segunda línea es la misma que $b= $a[0];
, es decir, la segunda línea solicita el primer carácter de una cadena de longitud cero, pero la cadena no contiene caracteres. Así que PHP lanza el siguiente error, que le permite saber el índice, simplemente no existe:
Notice: Uninitialized string offset: 0 in C:\websites\tcv3\wc2009\htdocs\aatest_array.php on line 3
Estos son los golpes duros de la programación en un lenguaje de programación relajado mecanografiado.
¿Puedes publicar la línea 35? –
Es como si estuvieras suprimiendo una declaración incorrecta. Proporcione el código –
Mostrar todo el código, puede estar en cualquier línea. – Cesar