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