我正在尝试找到一个在多维数组上使用array_map('mysql_real_escape_string', $data);
的解决方案,如果$data是多维数组,php会返回一个错误。干杯
发布于 2010-11-03 17:35:37
$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);
发布于 2019-04-25 18:26:06
您还可以使用minwork/array轻松映射任何多维数组。
与本机函数相比,这种解决方案最大的优点是,您可以映射具有不同嵌套深度的多维数组,还可以访问它们的键,例如:
$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
函数(无需修改输入数组)应用于每个元素,如下所示(无论每个元素嵌套得有多深)
$escapedData = Arr::map($data, function ($value) {
return mysql_real_escape_string($value);
}, Arr::MAP_ARRAY_VALUE_KEYS_LIST);
发布于 2017-07-31 15:11:01
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;}
一个适用于任何地方的简单解决方案。干杯!
https://stackoverflow.com/questions/4085623
复制相似问题