将函数array_map应用于其他数组的数组

时间:2013-05-12 21:00:06

标签: php arrays function

我有一个包含其他数组的数组。如何在不调用主数组($ 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();

2 个答案:

答案 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时,准备好的语句是更清晰,更安全的选择