【问题标题】:Split an array into arrays several times in php在php中多次将数组拆分为数组
【发布时间】:2013-01-23 21:34:46
【问题描述】:

我有一个 div 数组(博客文章)。说 33 篇博文。我的任务是将它们 first 分成两对(每隔两个 div 包装一个),这样我就有 17 个 div(每个包含一对博客文章,最后一个可能只包含一个博客文章)然后 - 我希望这 15 个对 div 再次分成 5 个组(最后一个可能包含更少)......所以最后我有 3 个块,每个块包含最多 5 个块,每个块包含两个博客文章.我说得够清楚吗?

当然,所有帖子的总数是未知的,所以我必须让它自动运行。

在寻找答案时,我发现了名为 array_chunk 的函数,它正是这样做的 - 将数组拆分为数组......在我的情况下 - 我必须运行这个函数两次。而且效果很好:)

$posts = array( 1,2,3,4 ... 33 );
$pairs = array_chunk( $posts, 2 ) // $pairs will contain an array of 17 arrays each containing two elements
$wrap = array_chunk( $pairs, 5 ) // $wrap will contain an array of 3 arrays each containing an array of pairs

唯一困扰我的是,当我通过 foreach 输出所有 div 时,我碰巧自然有 3 个嵌套的 foreaches... 首先渲染 3 个(或更多)大包装器 - 然后 - 5 对包装器最后 - 用于呈现两篇博文的 foreach。

我知道另一种解决方案 - 在原始数组上运行一次 foreach 并安排一些数学条件(例如 if( $i % 2 == 0 ) { //do stuff })以在适当的时候打开和关闭合适的 div。这是我无法完成的,如果有人可以帮助我解决这个问题,我会非常高兴。

我的问题如下:

  • 在性能方面是否存在显着差异? 要运行多个嵌套的 foreach 吗?
  • 对于在 这种情况?或者可能有一种完全不同的方法。

【问题讨论】:

    标签: php arrays foreach split


    【解决方案1】:

    运行多少嵌套 foreach 是否存在显着差异(在性能方面)?

    假设您有 100 个帖子。所以是 50 对,10 包。

    • 嵌套 foreach:50 个循环 * 10 个循环 = 100 个循环
    • 使用 % 的单个大循环:100 个循环...

    在这两种情况下都是一样的。 And array_chunk usage will not cause any major difference in perfomance.

    对于在这种情况下使用哪种方法,是否有某种最佳实践?或者可能有一种完全不同的方法。

    没有。但我宁愿使用嵌套循环,因为它对于其他程序员来说看起来更干净,并且如果需要,您可以在每个子循环周围包装一个函数

    【讨论】:

    • 我的计算与你的不同,Peter :) 需要 160 个循环,而不是嵌套示例中的 100 个。 (几乎是两倍)。如果你愿意的话,看看这个小提琴(html 窗口更具代表性) - jsfiddle.net/skip405/Bb7St/2
    • 你完全打破了我的逻辑)))谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多