Php 如何使用循环执行此操作,以便不必手动执行数组数据[]
我如何作为一个循环来完成这项工作,这样我就不必为数组的每个元素手动完成这项工作了Php 如何使用循环执行此操作,以便不必手动执行数组数据[],php,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] = m
$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
}
比如:-
将其放入while循环中
$count=count($data);
for ($i=0; $i< $count; $i++)
{
$data[$i] = mysql_escape_string($data[$i]);
}
$count=计数($data);
对于($i=0;$i<$count;$i++)
{
$data[$i]=mysql_escape_字符串($data[$i]);
}
或者,您可以将其放入while循环中:
$data = array_map("mysql_escape_string", $data);
我还没有测试过,但可能会更快
编辑:添加了“$data=“-正如jon_darkstar指出的,数组映射不会更改作为参数提供的数组,您需要分配它。数组映射、数组遍历或foreach。在while循环中放入一个(并且只有一个!)
$dataSafe = array_map('mysql_escape_string', $data);
或
请注意,array_map类似于FP意义上的map,它返回一个新数组,您必须赋值。使用&
时,array\u walk可以在适当的位置更改数组
PS-
mysql\u real\u escape\u string
是首选的警告:键盘的大写锁定已断开所有我在一段时间内使用此循环??映射未在适当位置更改,必须分配或使用数组\u walk
array_walk($data, function(&$x) {$x = mysql_escape_string($x);});
foreach(&$data as $x)
$x = mysql_escape_string($x)