繁体   English   中英

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

[英]Auto Increment PHP foreach loop with conditional statements

我创建了一个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++;
}

有没有一种方法可以将整数结果更改为基于输出的最终结果? 如果仅输出5个字段,则整数值应为1,2,3,4,5。

我希望这是有道理的。

通过使用continue ,可以跳过foreach主体的其余部分,包括$ i变量的增量。

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

$i = 0;
foreach ( $form['fields'] as $field ) {
    $i++;

如果$ forms是带有数字索引的普通数组,则可以这样编写上述三行:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM