0

我有一个包含其他数组的数组。如何在不调用主数组($inputarray)上每个数组的每个成员的情况下将函数应用于数组?

$inputarray = array($product, $first_name, $last_name, $email_from, $preftel, $address, $zip, $city, $address_array, $zip_array, $city_array, $per, $datew, $hqty, $nrf, $tw, $meters, $comments);  

function create_safe_array($a){
  global $link;                                 
  return $link->real_escape_string($a);
}

$inputarray = array_map('create_safe_array', $inputarray);

编辑:

require_once "sql.php";
$link = new mysqli($host, $user, $pw, $db) or die(".....");
$link->set_charset('UTF8');


$inputarray = array($product, $first_name, $last_name, $email_from, $preftel, $address, $zip, $city, $per, $datew, $hqty, $nrf, $tw, $meters, $comments);  

function create_safe_array($a){
  global $link;                                 
  return $link->real_escape_string($a);
}

$inputarray = array_map('create_safe_array', $inputarray);


$dateactial = date('d.m.Y');

$timeactual= date('H:i');

$sql = "INSERT INTO ORD (Date, Time, Prod, Name, LName, Mail, Tel, Address, ZIP, City,  Per, Date_When, Quantity, Nr_fo, Twag, Meters, Osservazioni) VALUES ('$dateactial ', '$timeactual', '$inputarray[0]', '$inputarray[1]', '$inputarray[2]', '$inputarray[3]', '$inputarray[4]', '$inputarray[5]', '$inputarray[6]', '$inputarray[7]', '$inputarray[8]', '$inputarray[9]', '$inputarray[10]', '$inputarray[11]', '$inputarray[12]', '$inputarray[13]', '$inputarray[14]')";

$link->query($sql) or die("....");
$link->close();
4

2 回答 2

6

递归执行:

function create_safe_array($a){
  if(is_array($a)){
     return array_map('create_safe_array', $a);
  }
  global $link;                                 
  return $link->real_escape_string($a);
}
于 2013-05-12T21:02:12.817 回答
4

您可以使用array_walk_recursive()代替 array_map (记住数组是通过引用传递的);如果您使用的是 PHP 5.3.x 或更高版本,则可以使用use而不是global.

array_walk_recursive(
    $inputarray,
    function (&$value) use ($link) {
        $value = $link->real_escape_string($value);

    }
);

但是(正如 Spudley 评论的那样)准备好的语句在使用 MySQLi 时是一种更清洁、更安全的选择

于 2013-05-12T21:15:04.470 回答