div (ブログ投稿) の配列があります。33 のブログ記事を言う。私の仕事は、最初にそれらをペアに分割し (他の 2 つの div ごとに別の div でラップする)、17 の div (それぞれにブログ投稿のペアが含まれ、最後の 1 つには 1 つのブログ投稿のみが含まれる場合があります) があり、次に-これらの 15 が必要ですペア div を 5 つのグループに再度分割します (最後のグループにはさらに少ない数が含まれる可能性があります)。最終的に、それぞれに最大 5 つのブロックが含まれる 3 つのブロックがあり、それぞれに 2 つのブログ投稿が含まれます。私は自分自身を十分に明確にしていますか?
もちろん、すべての投稿の総数は不明なので、自動的に機能させる必要があります。
答えを探していると、array_chunk
まさにそれを行うという名前の関数がわかりました-配列を配列に分割します...私の場合-この関数を2回実行する必要があります。そして、それは完全に機能します:)
$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 ペアのラッパーをレンダリングし、最後に - 2 つのブログをレンダリングするための foreach を作成します。投稿。
私は別の解決策を知っています-foreach
元の配列で一度実行し、if( $i % 2 == 0 ) { //do stuff }
適切なタイミングで適切なdivを開閉するためにいくつかの数学的条件(たとえば)を調整します。これは私が達成できなかったことであり、この方法が従うべきものである場合、誰かがこれを手伝ってくれたら本当にうれしいです.
私の質問は次のとおりです。
- 実行するネストされた foreach の数に関して (パフォーマンスの点で) 大きな違いはありますか?
- そのような状況でどの方法を使用するかについて、ある種のベストプラクティスはありますか? または、おそらくまったく異なるアプローチがあります。