2013-05-12 63 views
0

我有一個包含其他數組的數組。如何將函數應用於數組而不調用主數組($ inputarray)上每個數組的每個成員?將函數array_map應用到其他數組上的數組

$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(); 
+3

,因爲它會出現你正在使用和mysqli庫,你可能要考慮使用預處理語句時,語句是一個更清潔,更安全的選擇爲您的查詢而不是逃避變量。 – Spudley 2013-05-12 21:04:22

+0

從PHP 5.3開始,您應該使用[匿名函數](http://php.net/manual/en/functions.anonymous.php)來實現一次性回調。 – 2013-05-12 21:17:29

回答

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); 
} 
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工作

+0

謝謝你的回覆。 因爲我從來沒有使用準備好的陳述,你能否拿我這個案例的準備陳述的完整例子?謝謝 – user2120569 2013-05-12 22:12:37

+0

不知道你的SQL,很難向你展示一個準備好的語句的例子 – 2013-05-12 22:20:41

+0

我改進了我的答案! – user2120569 2013-05-12 22:31:02

相關問題