我有兩個函數用於從深度嵌套的對象/數組組合中添加或刪除斜槓。數組的第一個「級別」始終是一個對象,但其中的一些屬性可能是數組或對象。在遞歸函數中不能正常工作的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\"
)
)
)
我做了什麼錯了?沿線某處的參考文獻將會丟失...
我想你的意思是:objSlash($ arr [$ key],$ add) – Josh 2009-08-01 13:27:17
是的,當然:) – 2009-08-03 14:11:40