我怎么能用循环这样做,所以我不必手动为数组数据[]

时间:2010-12-31 07:03:49

标签: php

如何将其作为循环执行,因此我不必手动为数组的每个元素执行此操作?

 $filename=$_POST['filename'];
 $handle = fopen("$filename", "r");
 while (($data = fgetcsv($handle, 5000, ",")) !== FALSE)
 {  
    $data[0] = mysql_escape_string($data[0]);   /// customer id
    $data[1] = mysql_escape_string($data[1]);   /// first name
    $data[2] = mysql_escape_string($data[2]);   /// last name
    $data[3] = mysql_escape_string($data[3]);   /// email
    $data[4] = mysql_escape_string($data[4]);   /// phone
    $data[5] = mysql_escape_string($data[5]);   /// mobile
    $data[6] = mysql_escape_string($data[6]);   /// website
    $data[7] = mysql_escape_string($data[7]);   /// DOB
    $data[8] = mysql_escape_string($data[8]);   /// spouse first name
    $data[9] = mysql_escape_string($data[9]);   /// spouse last name
    $data[10] = mysql_escape_string($data[10]); /// spouse cell
    $data[11] = mysql_escape_string($data[11]);  /// spouse email
    $data[12] = mysql_escape_string($data[12]);  //// created by
    $data[13] = mysql_escape_string($data[13]);  //// created on
}

3 个答案:

答案 0 :(得分:2)

类似于: -

将此内容放入loop

$count=count($data);
    for ($i=0; $i< $count; $i++)
    {
      $data[$i] = mysql_escape_string($data[$i]); 
    }

答案 1 :(得分:1)

array_map,array_walk或foreach。把一个(只有一个!)放在循环中

 $dataSafe = array_map('mysql_escape_string', $data);

array_walk($data, function(&$x) {$x = mysql_escape_string($x);});

请注意,array_map与FP意义上的map类似,它返回一个新数组,您必须分配。当使用&时,array_walk可以改变您的数组

http://php.net/manual/en/function.array-walk.php
http://php.net/manual/en/function.array-map.php

foreach(&$data as $x)
    $x = mysql_escape_string($x)

PS - mysql_real_escape_string是首选

答案 2 :(得分:0)

或者你可以把它放在你的while循环中:

$data = array_map("mysql_escape_string", $data);

我没有测试过,但可能更快。

编辑:添加了“$ data =” - 因为jon_darkstar指出array_map不会更改作为参数提供的数组,您需要分配它。