在foreach循环中使用continue

时间:2015-04-26 17:55:25

标签: php

我有一个foreach循环,它迭代excel文件的每一行。使用从单行检索的数据,我运行一些查询,在我的数据库中选择或插入一些数据。 我运行的一个查询的示例:

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 个答案:

答案 0 :(得分:1)

引用php手册,

  在循环结构中使用

continue来跳过剩下的部分   当前循环迭代并在该条件下继续执行   评估,然后是下一次迭代的开始。

,而

  

break结束当前的执行,foreach,while,do-while或   开关结构。

这两个关键字都接受一个可选的数字参数,该参数告诉它应该跳过多少嵌套的封闭结构到结尾/断开。

所以是的,如果错误只影响一行,请使用continue;跳到下一行。如果单行中遇到的错误是致命的并且影响所有行,请使用break;结束foreach循环。