我创建了一个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。
我希望这是有道理的。
答案 0 :(得分:0)
通过使用continue
,您可以跳过foreach
正文的其余部分,包括 $ i 变量的增量。
为避免这种情况,您可以在迭代开始时执行增量,并在0处初始化 $ i :
$i = 0;
foreach ( $form['fields'] as $field ) {
$i++;
如果 $ forms 是一个普通数组 - 带有数字索引 - 那么你可以像这样写上面三行:
foreach ( $form['fields'] as $i => $field ) {