Mam dwie funkcje, których używam do dodawania lub usuwania ukośników z głęboko zagnieżdżonego zestawu obiektów/tablic. Pierwszy "poziom" tablicy jest zawsze obiektem, ale niektóre jej właściwości mogą być tablicami lub obiektami.Przekazywanie PHP przez odwołanie w funkcji rekursywnej nie działa
Oto moje dwie funkcje:
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;
}
miano tak:
objSlash($obj, false);
Jednakże funkcja nie pozbawić ukośniki z zagnieżdżonego tablicy. Obiekt przekazany do funkcji jest następujący:
stdClass Object
(
[id] => 3
[lines] => Array
(
[0] => Array
(
[character] => Name
[dialogue] => Something including \"quotes\"
)
)
)
Co zrobiłem źle? Gdzieś wzdłuż linii brakuje odniesienia ...
Dzięki, '& $ field' działało! – DisgruntledGoat