限制多个foreach

时间:2019-07-11 15:15:49

标签: php wordpress

好吧,我有一个包含系列的wordpress网站,每个系列都包含情节,我有这段代码来获取isSpecial = 1的系列,然后边做边获取每个动漫的限制为3个系列。

// Here getting the series
    $args=array(
        'orderby' => 'DESC',
        'post_type' => array( 'series', 'movies' ),
        'meta_query' => array(array( 'key' => 'isSpecial', 'compare' => '=','value' => '1'))
    );
    $animes = new WP_Query( $args );
    set_transient( 'animes', $trslidermoved_query_results, 12 * HOUR_IN_SECONDS );


// do while for series
        $i=0;
        while( $animes->have_posts() ) {
            $animes->the_post();
            $i++;
            $animeID[$i] = $post->ID;
            $args = array(
                'orderby' => 'meta_value_num',
                'order' => 'DESC',
                'fields' => 'all',
                'meta_query' => [['key' => 'episode_number','type' => 'NUMERIC',]]
            );

            $episodes[$i] = wp_get_post_terms(intval( $animeID[$i] ), 'episodes', $args );

// foreach for episodes
            foreach (array_slice($episodes[$i], 0, 3) as $episode) {
} // end foreach

} // end while

现在我要做的是将所有剧集的数量限制为10个

剧集[1]可能获得3集

剧集[2]可能获得3集

剧集[3]可能会获得2集

剧集[4]可能会获得3集

使用我的代码将显示11集,但我只想限制10集。

所以我想限制所有foreach的总和,而不是每个foreach。

1 个答案:

答案 0 :(得分:2)

您可以做的是合并所有情节/帖子,然后对该数组进行切片以获得前10个,例如

$all_episodes = [];

while () {
  [...]
  array_merge($all_episodes, array_slice($episodes[$i], 0, 3));
}

# Then loop through the first 10 items
foreach (array_slice($all_episodes, 0, 10) as $episode) {
  ...
}
相关问题