提高以下小代码的性能

时间:2012-11-30 06:13:04

标签: php mysql phpexcel

我正在上传一份包含1000条记录的excel文件。在我的数据库(mysql)中,已经存在一些记录。现在上传excel文件后,我将这些数据串在一个数组中。为此,我使用PHPExcel。现在,我再次想要使用那些不在我的数据库中的记录来形成一个新数组。为此,我使用的逻辑如下: 首先将数组(在上载excel文件后获得)转换为字符串。然后从字符串我替换记录,这是一个空格在数据库中。然后我再次将该字符串转换为数组。 代码就像:

$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
//array_shift($sheetData);

$string = "";
foreach( $sheetData as $val){
    foreach($val as $v){

        $string .= $v.",";

    }
}
$string = str_replace($res['email'],'',$string); // $res['email'] is from database
$ultimate_array = array();
$formatted_array = explode(',',$string);
    foreach($formatted_array as $fa){
        if(strstr($fa,'@')){
            array_push($ultimate_array,$fa);
        }


    }

我得到了结果,但性能非常慢。你能给我一些解决方案,以便我可以提高性能。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你不需要去串又回。 使用array_searchunset

$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

// you may need this depending on the structure of your array
// array_shift($sheetData);

if (in_array($res['email'], $sheetData)) {
    unset($sheetData[array_search($res['email'], $sheetData)]);
}