J'ai deux fonctions que j'utilise pour ajouter ou supprimer des barres obliques d'un combo objet/tableau profondément imbriqué. Le premier "niveau" du tableau est toujours un objet, mais certaines de ses propriétés peuvent être des tableaux ou des objets.La passe PHP par référence dans la fonction récursive ne fonctionne pas
Voici mes deux fonctions:
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;
}
être appelé comme ceci:
objSlash($obj, false);
Cependant, la fonction ne supprime pas les barres obliques du tableau imbriqué. L'objet transmis à la fonction est comme suit:
stdClass Object
(
[id] => 3
[lines] => Array
(
[0] => Array
(
[character] => Name
[dialogue] => Something including \"quotes\"
)
)
)
Qu'est-ce que j'ai fait de mal? Quelque part le long de la ligne, une référence disparaît ...
Merci, '& $ field' travaillé! – DisgruntledGoat