2015-04-26 103 views
0

我有一個迭代excel文件的每一行的foreach循環。隨着我從單行檢索的數據運行一些查詢,選擇或插入我的數據庫中的一些數據。一個查詢的 例子我運行:在foreach循環中繼續使用

if($error == ''){ 
    try{ 
     $s2 = $pdo->prepare("SELECT anagrafiche.id_ndg FROM anagrafiche 
      WHERE anagrafiche.cod_fisc = '$cf_cedente' 
      OR anagrafiche.p_iva = '$cf_cedente' 
      OR anagrafiche.cf_estero = '$cf_cedente'"); 
     $s2->execute(); 
    } 
    catch (PDOException $e){ 
     $error = 'Errore nel trovare anagrafica cedente: '.$e->getMessage();  
     echo 'Non trovato cedente con codice fiscale '.$cf_cedente.' ';    
    }     
}    

這種情況結束了很多嵌套如果因爲我不想當一個錯誤是在一個特定的點拋出一些查詢運行。 如果我使用繼續停止當前行來執行並跳轉到下一個而不是這種情況,那麼在執行時間或資源方面會更好嗎?因此,代碼將如下所示:

try{ 
    $s2 = $pdo->prepare("SELECT anagrafiche.id_ndg FROM anagrafiche 
     WHERE anagrafiche.cod_fisc = '$cf_cedente' OR anagrafiche.p_iva = 
     '$cf_cedente' OR anagrafiche.cf_estero = '$cf_cedente'"); 
    $s2->execute(); 
} 
catch (PDOException $e){ 
    $error = 'Errore nel trovare anagrafica cedente: '.$e->getMessage();  
    echo 'Non trovato cedente con codice fiscale '.$cf_cedente.' ';   
}     
if($error!=''){ 
    echo $error; 
    continue; 
} 

或者還有一個更好的選項,我還沒有想過呢? 謝謝你的幫助! 注意:我正在執行大量數據加載,所以我需要繼續加載下一行,跳過出錯的那一行。

回答

1

引述PHP手冊,

continue被循環結構內使用跳過 當前循環迭代的其餘部分,並在條件 評價繼續執行,然後下一個迭代的開始。

break結束當前對,的foreach的執行,而,做-而或 開關結構。

這兩個關鍵字都接受一個可選的數字參數,告訴它應該跳過多少個嵌套的封閉結構跳到末尾/分出。

所以是的,如果一個錯誤隻影響一行,使用continue;跳到下一行。如果單行中遇到的錯誤是致命的並且會影響所有行,請使用break;結束foreach循環。