【发布时间】:2018-10-30 20:47:14
【问题描述】:
这是我的数组:
array(4) {
[0]=>
array(500000) {
["1234"]=>
array(3) {
["fileName"]=>
string(10) "monkey.jpg"
["path"]=>
string(20) "animales/monkey.jpg"
["dateTime"]=>
string(19) "2016-10-12 19:46:25"
}
["3456"]=>
array(3) {
["fileName"]=>
string(9) "horse.jpg"
["path"]=>
string(19) "animales/horse.jpg"
["dateTime"]=>
string(19) "2016-10-12 19:46:25"
}
.... and many more...
}
... and many more...
}
我想将内容存储到我的数据库中:
$sql = "INSERT INTO files (id,fileName,path,dateTime) values(?,?,?,?) ";
foreach($array as $key => $value){
if(is_array($value)){
foreach($value as $key => $v){
foreach($v as $k => $item){
if(is_array($v)){
$s = str_replace("\\","",$v['dateTime']);
$d = strtotime($s);
$dateTime = date('Y.m.d H:i:s', $d);
$q->execute(array($key,$v['fileName'],$v['path'],$dateTime));
}
}
}
}
}
我的问题是,我有超过 500.000 个条目。所以我的系统崩溃了。我认为这是因为循环内部有很多循环。有没有办法只用一个循环或其他方式更快地读取内容?
注意:$array 是这样创建的拼接数组 ($array[] = array_splice($orinal_array, 0,count($original_array)); 实际上我这样做是为了让系统更快
【问题讨论】:
-
注意:你的最后一个 for 循环是多余的。
-
而不是使用循环插入数据创建数组并一次插入100个数据。所以它会执行得更快,也可以从你的 php.ini 中改变你的执行时间
标签: php mysql loops multidimensional-array foreach