ACF foreach 只显示最后一个值
ACF foreach Only Showing Last Value
正在学习PHP,所以需要一些帮助:) 下面第三个 ACF 转发器中的 foreach 循环仅输出数组的最后一个值。 vardump 显示整个数组似乎是正确的。
<?php if ( have_rows( 'product_table' ) ) : ?>
<?php while ( have_rows( 'product_table' ) ) : the_row(); ?>
<?php $tcols = array(); ?>
<table>
<h3><?php the_sub_field( 'product_table_title' ); ?></h3>
<?php if ( have_rows( 'product_table_columns' ) ) : ?>
<?php while ( have_rows( 'product_table_columns' ) ) : the_row(); ?>
<?php $product_table_column_selected_option = get_sub_field( 'product_table_column' ); ?>
<?php if ( $product_table_column_selected_option ) : ?>
<th><?php echo esc_html( $product_table_column_selected_option['label'] ); ?></th>
<?php $tcols[] = esc_html( $product_table_column_selected_option['value'] ); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php if ( have_rows( 'product_table_products' ) ) : ?>
<?php while ( have_rows( 'product_table_products' ) ) : the_row(); ?>
<?php $product_table_product = get_sub_field( 'product_table_product' ); ?>
<?php if ( $product_table_product ) : ?>
<?php foreach($tcols as $tcol); {
$tdata = get_field($tcol, $product_table_product);
echo '<tr><td>';
echo $tdata;
echo '</td></tr>'; } ?>
<?php var_dump($tcols); //This shows all the correct arrays... why does the above foreach only show the last in the array? ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
</table>
<?php endwhile; ?>
<?php endif; ?>
我已经在评论中回答了,但这里是固定代码:
<?php if (have_rows('product_table')) : ?>
<?php while (have_rows('product_table')) : the_row(); ?>
<?php $tcols = array(); ?>
<table>
<h3><?php the_sub_field('product_table_title'); ?></h3>
<?php if (have_rows('product_table_columns')) : ?>
<?php while (have_rows('product_table_columns')) : the_row(); ?>
<?php $product_table_column_selected_option = get_sub_field('product_table_column'); ?>
<?php if ($product_table_column_selected_option) : ?>
<th><?php echo esc_html($product_table_column_selected_option['label']); ?></th>
<?php $tcols[] = esc_html($product_table_column_selected_option['value']); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php if (have_rows('product_table_products')) : ?>
<?php while (have_rows('product_table_products')) : the_row(); ?>
<?php $product_table_product = get_sub_field('product_table_product'); ?>
<?php if ($product_table_product) : ?>
<?php foreach ($tcols as $tcol) {
$tdata = get_field($tcol, $product_table_product);
echo '<tr><td>';
echo $tdata;
echo '</td></tr>';
}
?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
</table>
<?php endwhile; ?>
<?php endif; ?>
问题是这里行的末尾有一个 ;
:<?php foreach($tcols as $tcol); {
这将停止处理。删除它可以解决问题。
正在学习PHP,所以需要一些帮助:) 下面第三个 ACF 转发器中的 foreach 循环仅输出数组的最后一个值。 vardump 显示整个数组似乎是正确的。
<?php if ( have_rows( 'product_table' ) ) : ?>
<?php while ( have_rows( 'product_table' ) ) : the_row(); ?>
<?php $tcols = array(); ?>
<table>
<h3><?php the_sub_field( 'product_table_title' ); ?></h3>
<?php if ( have_rows( 'product_table_columns' ) ) : ?>
<?php while ( have_rows( 'product_table_columns' ) ) : the_row(); ?>
<?php $product_table_column_selected_option = get_sub_field( 'product_table_column' ); ?>
<?php if ( $product_table_column_selected_option ) : ?>
<th><?php echo esc_html( $product_table_column_selected_option['label'] ); ?></th>
<?php $tcols[] = esc_html( $product_table_column_selected_option['value'] ); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php if ( have_rows( 'product_table_products' ) ) : ?>
<?php while ( have_rows( 'product_table_products' ) ) : the_row(); ?>
<?php $product_table_product = get_sub_field( 'product_table_product' ); ?>
<?php if ( $product_table_product ) : ?>
<?php foreach($tcols as $tcol); {
$tdata = get_field($tcol, $product_table_product);
echo '<tr><td>';
echo $tdata;
echo '</td></tr>'; } ?>
<?php var_dump($tcols); //This shows all the correct arrays... why does the above foreach only show the last in the array? ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
</table>
<?php endwhile; ?>
<?php endif; ?>
我已经在评论中回答了,但这里是固定代码:
<?php if (have_rows('product_table')) : ?>
<?php while (have_rows('product_table')) : the_row(); ?>
<?php $tcols = array(); ?>
<table>
<h3><?php the_sub_field('product_table_title'); ?></h3>
<?php if (have_rows('product_table_columns')) : ?>
<?php while (have_rows('product_table_columns')) : the_row(); ?>
<?php $product_table_column_selected_option = get_sub_field('product_table_column'); ?>
<?php if ($product_table_column_selected_option) : ?>
<th><?php echo esc_html($product_table_column_selected_option['label']); ?></th>
<?php $tcols[] = esc_html($product_table_column_selected_option['value']); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php if (have_rows('product_table_products')) : ?>
<?php while (have_rows('product_table_products')) : the_row(); ?>
<?php $product_table_product = get_sub_field('product_table_product'); ?>
<?php if ($product_table_product) : ?>
<?php foreach ($tcols as $tcol) {
$tdata = get_field($tcol, $product_table_product);
echo '<tr><td>';
echo $tdata;
echo '</td></tr>';
}
?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
</table>
<?php endwhile; ?>
<?php endif; ?>
问题是这里行的末尾有一个 ;
:<?php foreach($tcols as $tcol); {
这将停止处理。删除它可以解决问题。