用于多维数组的array_map

时间:2010-11-03 09:25:41

标签: php multidimensional-array

我试图找到在多维数组上使用array_map('mysql_real_escape_string', $data);的解决方案,如果$ data是多维的,php会返回错误。欢呼声

3 个答案:

答案 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