Tengo dos funciones que estoy usando para agregar o eliminar barras desde un objeto/matriz combo profundamente anidados. El primer "nivel" de la matriz es siempre un objeto, pero algunas de sus propiedades pueden ser matrices u objetos.Pase de PHP por referencia en la función recursiva no funciona
Aquí están mis dos funciones:
function objSlash(&$obj, $add=true)
{
foreach ($obj as $key=>$field)
{
if (is_object($field))
objSlash($field, $add);
else if (is_array($field))
arrSlash($field, $add);
else if ($add)
$obj->$key = addslashes($field);
else
$obj->$key = stripslashes($field);
}
return;
}
function arrSlash(&$arr, $add=true)
{
foreach ($arr as $key=>$field)
{
if (is_object($field))
objSlash($field, $add);
else if (is_array($field))
arrSlash($field, $add);
else if ($add)
$arr[$key] = addslashes($field);
else
$arr[$key] = stripslashes($field);
}
return;
}
siendo llamados así:
objSlash($obj, false);
Sin embargo, la función no elimina las barras de la matriz anidada. El objeto pasado a la función es así:
stdClass Object
(
[id] => 3
[lines] => Array
(
[0] => Array
(
[character] => Name
[dialogue] => Something including \"quotes\"
)
)
)
¿Qué he hecho mal? En algún lugar a lo largo de la línea falta una referencia ...
¡Gracias, '& $ field' funcionó! – DisgruntledGoat