1

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


    }

結果は出ましたが、パフォーマンスが非常に遅いです。パフォーマンスを向上させるための解決策を教えてください。

前もって感謝します。

4

1 に答える 1

0

文字列に行ったり来たりする必要はありません。array_searchを使用して設定を解除します

$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)]);
}
于 2012-11-30T07:01:05.613 に答える