你自己对比下
$arr=array('ii"',array('one'=>'ec"','two'=>5),'aa"a');
function t(& $arr){
foreach($arr as $k => $v){
if(is_string($v)){
$arr[$k] = addslashes($v);
}else{
$arr[$k] = t($v);
}
}
return $arr;
}
t($arr);
echo "<pre>";
print_r($arr);
echo '</pre>';
$arr=array('ii"',array('one'=>'ec"','two'=>5),'aa"a');
function t(& $arr){
foreach($arr as $k => $v){
if(is_string($v)){
$arr[$k] = addslashes($v);
}else{
$arr[$k] = t($v);
}
}
return $arr;
}
t($arr);
echo "<pre>";
print_r($arr);
echo '</pre>';
array_walk_recursive($arr, function(&$v) { $v = addslashes($v);} );
print_r($arr);
Array
(
[0] => ii\"
[1] => Array
(
[one] => ec\'
[two] => 5
))
function t(&$arr){
foreach($arr as $i=>&$v){
if(is_array($v)){
t($v);
}else{
$arr[$i] = addslashes($v);
}
}
}
t($arr);
print_r($arr);
foreach($arr as $key=>$v){
if(is_string($v)){
$arr[$key]=addslashes($v);
}else{
t($arr[$key]);
}
}
}
foreach($arr as $key=>$v){
if(is_string($v)){
$arr[$key]=addslashes($v);
}else{
t($arr[$key]);
}
}
}$arr=array('ii"',array('one'=>'ec"','two'=>5));
t($arr);Invalid argument supplied for foreach()
function t(&$arr){
foreach($arr as $key=>$v){
if(is_array($v)){
t($arr[$key]);
}else{
$arr[$key]=addslashes($v);
}
}
}
$arr=array('ii"',array('one'=>'ec"','two'=>'5'));
t($arr);print_r($arr);
function t(&$arr){
foreach($arr as $v){
if(is_string($v)){
$arr[]=addslashes($v); //这里如果用$arr[]只能是在原数组情况下添加了元素
}else{
t($v); //这里$v打印出来是array('one'=>'ec"','two'=>5) 当它递归重新走到foreach里面已经不是$arr原数组了,是和$arr完全不相关的一个新数组
}
}
}
如下面的写就ok啦!
$arr=array('ii"',array('one'=>'ec"','two'=>5));
function t(&$arr){
foreach($arr as $k=>$v){
if(is_string($v)){
$arr[$k]=addslashes($v);
}else{
if(is_array($v)){ //加上判断后就可以关闭为foreach提供了无效参数的警告
t($arr[$k]); //这里指的是原数组foreach出来的array('one'=>'ec"','two'=>5)
}