深く入れ子にされたオブジェクト/配列コンボからスラッシュを追加または削除するために使用している関数が2つあります。配列の最初の「レベル」は常にオブジェクトですが、そのプロパティの一部は配列またはオブジェクトです。ここでPHPは再帰関数の参照渡しが機能しません
は私の二つの機能です:
とても似呼ばれて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;
}
:
objSlash($obj, false);
しかし、関数はネストされた配列からスラッシュを削除しません。関数に渡されるオブジェクトは、次のようになります。
stdClass Object
(
[id] => 3
[lines] => Array
(
[0] => Array
(
[character] => Name
[dialogue] => Something including \"quotes\"
)
)
)
どうしたのですか?行のどこかで参照が欠落しています...
ありがとう、 '&$フィールド'働いた! – DisgruntledGoat