【问题标题】:use of continue in a foreach loop在 foreach 循环中使用 continue
【发布时间】:2015-04-26 17:55:25
【问题描述】:

我有一个 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.' ';             
    }                   
}               

这种情况最终会出现大量嵌套 if,因为如果在特定点抛出错误,我不希望运行某些查询。 如果我使用 continue 停止要执行的当前行并跳转到下一个而不是这种情况,在执行时间或资源方面会更好吗?这样代码看起来像:

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

或者我还没有想到更好的选择? 谢谢您的帮助! 注意:我正在进行大量数据加载,因此我需要继续加载下一行,跳过出错的行。

【问题讨论】:

    标签: php


    【解决方案1】:

    引用php手册,

    continue 用于循环结构中以跳过其余的 当前循环迭代并在条件下继续执行 评估,然后开始下一次迭代。

    break 结束当前 for、foreach、while、do-while 或 开关结构。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2023-03-18
      • 2012-12-21
      相关资源
      最近更新 更多