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

时间:2016-02-23 18:50:20

标签: php foreach conditional auto-increment

我创建了一个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。

我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

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

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

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

如果 $ forms 是一个普通数组 - 带有数字索引 - 那么你可以像这样写上面三行:

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