我有一系列div(博客文章)。说33篇博文。我的任务是将它们首先分成两对(将另外两个div包装成另一个),这样我就有17个div(每个包含一对博客帖子,最后一个可能只包含一篇博文)然后 - 我希望这15个div-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。如果有人可以帮我解决这个方法,那么我无法完成这件事并且真的很高兴。
我的问题如下:
答案 0 :(得分:1)
关于要运行多少个嵌套的foreach,是否存在显着差异(就性能而言)?
让我们说你有100个帖子。所以它是50对,10包。
两种情况都是一样的。 And array_chunk usage will not cause any major difference in perfomance.
在这种情况下使用哪种方法是否有某种最佳做法?或者可能存在完全不同的方法。
没有。但我宁愿选择嵌套循环,因为它对于另一个程序员看起来更干净,如果你需要,你可以在每个子循环中包装一个函数