0
我有關於以下代碼問題:PHP迭代通過陣列錯誤
PHP函數,通過每個級別需要在陣列中,遞歸地循環,並一個字符串替換如果單引號發現並返回陣列。
function escape_quote($data)
{
$clean = array();
foreach ($data as $key=>$val)
{
if (is_array($val))
{
$clean[$key] = escape_quote($val);
} else {
$val = str_replace("'", "''", $val);
$clean[$key] = $val;
}
}
return $clean;
}
下面是數據的陣列我傳遞:
$vars = array
(
'customer1' => array
(
'fname' => 'John',
'lname' => "D'oe"
),
'customer2' => array
(
'name' => array
(
'fname' => 'John',
'lname' => "D'oe"
),
'address' => '1234 street',
'phone' => '1234567899'
)
);
我做這個調用該函數和數組傳遞給它:
$output = escape_quote($vars);
print_r($output);
我在屏幕上輸出數組([customer1] => Array([fname] => John [lname] => D''oe)[customer2] =>數組([name] =>數組([數組]) [fname] => John [lname] => D'oe)[地址] => 1234 street [phone] => 1234567899))
我的問題是爲什麼我沒有收到第二個「D'OE」作爲「D''oe」
如果我在函數中回顯每個值而不是添加到乾淨的數組中,它會將第二個「'」添加到「D'oe」中。我不知道什麼是缺少的...請幫助。
UPDATE:
我想通了這個問題,提出更新的代碼。如果$ val是一個數組,我沒有將$ clean [$ key]設置爲等於escape_quote($ val)。
「escape_quote($ VAL);」 - 你不把結果分配給任何東西。 – Danack
請參閱我的更新,如果$ val是一個數組,我沒有分配與clean數組相同的迭代。現在就工作,謝謝大家! – pixelpusher