我试图找到在多维数组上使用array_map('mysql_real_escape_string', $data);
的解决方案,如果$ data是多维的,php会返回错误。欢呼声
答案 0 :(得分:35)
$array = array( array('A' => "Hello", 'B' => "World"),
array('A' => "Goodnight", 'B' => "Vienna")
);
function myFunc(&$item, $key) {
$item = mysql_real_escape_string($item);
}
array_walk_recursive($array,'myFunc');
var_dump($array);
答案 1 :(得分:0)
function realEscape($data){
global $connection;
$array=[];
do{
if(is_string($data)){
$array= mysqli_real_escape_string($connection,$data);
break;
}
foreach($data as $key =>$value){
$array[$key]=is_array($value)?realEscape($value):mysqli_real_escape_string($connection,$value);
}
}while(0);
return $array;}
适合任何地方的简单解决方案。干杯!
答案 2 :(得分:0)
您还可以使用minwork/array轻松映射任何多维数组。
此解决方案相对于本机函数的最大优势是,您可以映射具有不同嵌套深度的多维数组,也可以访问其键,例如:
<styled-checkbox data-foo="bar"></styled-checkbox>
在这种情况下,您可以将$array = [
1 => [
2 => 'a',
3 => 'b',
4 => [
5 => 'c',
],
],
'test' => 'd',
];
$callback = function ($keys, $value) {
return implode('.', $keys) . " -> {$value}";
}
Arr::map($array, $callback, Arr::MAP_ARRAY_KEYS_ARRAY_VALUE) ->
[
1 => [
2 => '1.2 -> a',
3 => '1.3 -> b',
4 => [
5 => '1.4.5 -> c',
],
],
'test' => 'test -> d',
]
函数(无需修改输入数组)简单地应用于每个这样的元素(无论每个元素嵌套的深度如何)
mysql_real_escape_string