【问题标题】:how to use php to exclude the last row in an array如何使用php排除数组中的最后一行
【发布时间】:2018-08-13 19:51:48
【问题描述】:

我一直试图在手册中阅读此内容,但基本上我有一个array,我试图将其反转并排除最后一项。所以我的数组中目前有 14 个项目,我正在让它反转,它显示 14-2。我的代码让它排除了最后一项。所以我猜它在技术上是可行的,但我实际上希望它输出为 13-1。我尝试使用array_poparray_shift,但我不知道如何将它与array_reverse 集成。

function smile_gallery( $atts ) {
    if( have_rows('smile_gallery', 3045) ):

    $i = 1;

    $html_out = '';

    $html_out .= '<div class="smile-container">';
        $html_out .= '<div class="fg-row row">';

            // vars
            $rows = get_field('smile_gallery', 3045);
            $count = count( get_field('smile_gallery', 3045) );

            $html_out .= '<div class="col-md-8">'; // col-md-offset-1
                $html_out .= '<div class="smile-thumbs">';

                foreach( array_reverse($rows) as $row) :

                // vars
                $week = "smile_week";
                $img = "smile_img";
                $caption = "smile_caption";

                // Do stuff with each post here
                if( $i < $count) :

                    $html_out .= '<div class="smile-thumb-container">';
                        $html_out .= '><h6>Week ' . $row["smile_week"] . '</h6></a>'; // smile thumb week  
                    $html_out .= '</div>'; // smile thumb container
                endif;

                $i++;

                endforeach;

                $html_out .= '</div>';
            $html_out .= '</div>';
        $html_out .= '</div>';
    $html_out .= '</div>'; // smile container

    endif;

    return $html_out;
}
add_shortcode( 'show_smiles', 'smile_gallery' );

【问题讨论】:

  • 将 array_reverse 移出 foreach 并在之前进行修改。
  • @LawrenceCherone 如果我把它拿出来,foreach 不会反转

标签: php foreach count advanced-custom-fields


【解决方案1】:

我正在阅读您的问题如下,如果我错了,请纠正我。

我有一个数组,我试图将其反转并排除第一个和最后一个项目。

如您所知,您需要使用 array_pop()array_shift()

<?php
//
$rows = get_field('smile_gallery', 3045);
$count = count($rows);

array_pop($rows);
array_shift($rows);

foreach (array_reverse($rows) as $row):
...

如果你想先反转,然后再做你的操作,如果你从两端移除项目,这不是必需的。从 foreach 中取出 array_reverse,然后进行操作。

<?php
// vars
$rows = get_field('smile_gallery', 3045);
$count = count($rows);

$rows = array_reverse($rows);

array_pop($rows);
array_shift($rows);

foreach ($rows as $row):
...

如果有帮助,请告诉我。

【讨论】:

  • 就是这样!天啊,我一直在尝试很多事情,主要是想惹恼伯爵。我不需要array_shift,但array_pop 完全符合我的要求。出于好奇,如果我这样做了array_reverse($rows, true),那我就必须shift,然后呢? Anyhoot,您在我回复时编辑了您的消息。将其保留为 foreach (array_reverse($rows) as $row): 对我有用。
  • 抱歉,我没有考虑这些键,因为您的代码没有使用它们。您也可以使用 shift 或 pop ,具体取决于您是否将 array_reverse 放在它们之间。但;任何对你有用的东西。很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多