我有一个包含其他数组的数组。如何在不调用主数组($ 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();
答案 0 :(得分: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);
}
答案 1 :(得分: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时,准备好的语句是更清晰,更安全的选择