使用条件语句自动递增PHP foreach循环

使用条件语句自动递增PHP foreach循环,php,foreach,conditional,auto-increment,Php,Foreach,Conditional,Auto Increment,我创建了一个foreach循环,循环大约50个字段值。我使用条件语句只输出我想要的字段。我想改变交替行的样式(我必须使用内联css,因为这是用于HTML电子邮件的)。我假设我可以通过使用$I变量在循环中迭代,然后得到奇数/偶数来实现这一点。我遇到的问题是,这个循环在50个字段中迭代,因为我没有输出一些字段,所以整数的顺序不正确。结果是1,2,3,7,10等等。我不能用这个结果得到精确的奇偶结果 代码如下: $i = 1; foreach ( $form['fields'] as $field )

我创建了一个
foreach
循环,循环大约50个字段值。我使用条件语句只输出我想要的字段。我想改变交替行的样式(我必须使用内联css,因为这是用于HTML电子邮件的)。我假设我可以通过使用
$I
变量在循环中迭代,然后得到奇数/偶数来实现这一点。我遇到的问题是,这个循环在50个字段中迭代,因为我没有输出一些字段,所以整数的顺序不正确。结果是1,2,3,7,10等等。我不能用这个结果得到精确的奇偶结果

代码如下:

$i = 1;
foreach ( $form['fields'] as $field ) {
    $use_text = false;

    $raw_field_value = RGFormsModel::get_lead_field_value( $entry, $field );
    $field_value = GFCommon::get_lead_field_display( $field, $raw_field_value, rgar( $entry, 'currency' ), $use_text, $format, 'email' );

    if ( $field->type == "product" || $field->type == "hidden" || $field->type == "section" || $field->type == "html" ) {
        continue;
    } else if ( GFFormsModel::is_field_hidden( $form, $field, array(), $entry ) ) {
        // ignore fields hidden by conditional logic
        continue;
    }

    if ( $field_value === false ) {
        continue;
    }

    if ( !empty( $field_value ) || strlen( $field_value ) > 0 ) {
        $message .= '<tr style="vertical-align: top; text-align: left; padding: 0;" align="left">';

            $message .= '<td style="word-break: break-word; -webkit-hyphens: none; -moz-hyphens: none; hyphens: none; border-collapse: collapse !important; vertical-align: top; text-align: left; color: #252b23; font-family: Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; border-left-style: solid; border-left-color: #ccc; border-left-width: 1px; border-top-color: #ccc; border-top-width: 1px; border-top-style: solid; margin: 0; padding: 8px;" align="left" valign="top"><strong>' . $field->label . '</strong> ' . $i . '</td>';
            $message .= '<td style="word-break: break-word; -webkit-hyphens: none; -moz-hyphens: none; hyphens: none; border-collapse: collapse !important; vertical-align: top; text-align: left; color: #252b23; font-family: Helvetica, Arial, sans-serif; font-weight: normal; line-height: 19px; font-size: 14px; border-left-style: solid; border-left-color: #ccc; border-left-width: 1px; border-top-color: #ccc; border-top-width: 1px; border-top-style: solid; margin: 0; padding: 8px;" align="left" valign="top">' . $field_value . '</td>';

        $message .= '</tr>';
    }

    $i++;
}
$i=1;
foreach($form['fields']作为$field){
$use_text=false;
$raw\u field\u value=RGFormsModel::get\u lead\u field\u value($entry,$field);
$field\u value=GFCommon::get\u lead\u field\u display($field,$raw\u field\u value,rgar($entry,'currency'),$use\u text,$format,'email');
如果($field->type==“product”| |$field->type==“hidden”| |$field->type==“section”| |$field->type==“html”){
继续;
}else if(GFFormsModel::is_field_hidden($form,$field,array(),$entry)){
//忽略条件逻辑隐藏的字段
继续;
}
如果($field_value===false){
继续;
}
如果(!empty($field_value)| strlen($field_value)>0){
$message.='';
$message.=''.$field->label.'.$i';
$message.=''.$field_值'';
$message.='';
}
$i++;
}
是否有方法将整数结果更改为基于输出的最终结果?如果仅输出5个字段,则整数值应为1,2,3,4,5


我希望这是有意义的。

通过使用
continue
,您可以跳过每个
主体的
其余部分,包括$I变量的增量

为了避免这种情况,您可以在迭代开始时进行增量,并在0处初始化$i:

如果$forms是一个普通数组(带有数字索引),那么您可以这样写上面的三行:

foreach ( $form['fields'] as $i => $field ) {

为什么不将
$i++
放在
if
语句中?只有在不忽略字段的情况下才增加$i,这样它才能与您需要的一致expect@andrewsi成功了!我不知道增量受到
if
语句的影响。我认为它只受整个foreach循环的影响。谢谢如果$forms是一个非关联数组,您可以通过以下方式获得$i:
foreach($i=>form['fields']作为$i=>$field){
。那么您根本不必增加它。@andrewsi我想我给了您一个赞成票,但是我如何才能将您的评论作为正确答案?
foreach ( $form['fields'] as $i => $field ) {