Hola a todos!
Hoy les comparto un tip que acabo de aprender, tras horas de análisis de un extraño fallo que ocurría en mi programación al usar la función PHP explode().
El fallo que ocurría era que al ejecutarlo sobre un string, los valores retornados en el array resultante, eran todos igual a cero, en vez de ser los substrings esperados.
Ejemplo:
$cadena = "Hola, mundo";
$array = explode(",", $cadena);
Al revisar el valor de $array, me salía esto:
Array(
[0] => 0,
[1] => 0
)
En vez de esto:
Array(
[0] => "Hola",
[1] => " mundo"
)
Al principio, pensé que el separador, la coma, tal vez no era tal, y que era un caracter "similar" a la coma, y entonces debía usar ese caracter "similar" como separador. Por ello, reemplacé el uso de explode() por preg_split(), en la cual puedo usar expresiones regulares como separador. Pero no resultó, pues el caracter, la coma "similar", era exactamente la misma que la de mi separador inicial.
Entonces pensé que podría deberse al tipo de datos de la variable, que provenía de una base de datos.
En efecto, el campo de origen era de tipo CLOB. Por eso, en PHP intenté "castear" la variable como string usando su función strval(), pero no bastó. Entonces busqué directamente en Oracle la forma de hacer lo mismo, y así llegué a la función SQL TO_CHAR():
SELECT TO_CHAR(campo) AS campo...
Y voilà! Mi variable ahora era un sencillo string, y explode() por fin la reconoció como tal, retornándome los valores esperados.
Sé que es algo muy obvio, pero yo estuve horas devanándome los sesos para averiguar por qué explode() me retornaba estos valores raros, jajaja. Espero que les sirva, y tengan siempre en cuenta el tipo de dato de las variables, especialmente si se cargan desde una base de datos!
Hasta pronto!
Comentarios