首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多维数组的array_map

多维数组的array_map
EN

Stack Overflow用户
提问于 2010-11-03 17:25:41
回答 3查看 22.2K关注 0票数 23

我正在尝试找到一个在多维数组上使用array_map('mysql_real_escape_string', $data);的解决方案,如果$data是多维数组,php会返回一个错误。干杯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-03 17:35:37

代码语言:javascript
复制
$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);
票数 38
EN

Stack Overflow用户

发布于 2019-04-25 18:26:06

您还可以使用minwork/array轻松映射任何多维数组。

与本机函数相比,这种解决方案最大的优点是,您可以映射具有不同嵌套深度的多维数组,还可以访问它们的键,例如:

代码语言:javascript
复制
$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函数(无需修改输入数组)应用于每个元素,如下所示(无论每个元素嵌套得有多深)

代码语言:javascript
复制
$escapedData = Arr::map($data, function ($value) {
    return mysql_real_escape_string($value);
}, Arr::MAP_ARRAY_VALUE_KEYS_LIST);
票数 1
EN

Stack Overflow用户

发布于 2017-07-31 15:11:01

代码语言:javascript
复制
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;}

一个适用于任何地方的简单解决方案。干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4085623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档