0

我有一个 div 数组(博客文章)。说 33 篇博文。我的任务是首先将它们分成对(每隔两个 div 包装一个),这样我就有 17 个 div(每个包含一对博客文章,最后一个可能只包含一个博客文章)然后 - 我想要这 15 个pair-divs 再次分成 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

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

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

我的问题如下:

  • 运行多少嵌套 foreaches 是否存在显着差异(在性能方面)?
  • 对于在这种情况下使用哪种方法,是否有某种最佳实践?或者可能有一种完全不同的方法。
4

1 回答 1

1

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

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

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

在这两种情况下都是一样的。并且 array_chunk 的使用不会导致性能上的任何重大差异。

  • 基准:http ://codepad.org/KtEchEmR (我相信字节的比较比整数快)

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

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

于 2013-01-23T21:40:43.280 回答