0

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 の数に関して (パフォーマンスの点で) 大きな違いはありますか?
  • そのような状況でどの方法を使用するかについて、ある種のベストプラクティスはありますか? または、おそらくまったく異なるアプローチがあります。
4

1 に答える 1

1

実行するネストされた foreach の数に関して (パフォーマンスの点で) 大きな違いはありますか?

100件の投稿があるとしましょう。50足10巻です。

  • ネストされた foreach: 50 ループ * 10 ループ = 100 ループ
  • % を使用した単一の大きなループ: 100 ループ...

どちらの場合も同じことです。また、array_chunk を使用してもパフォーマンスに大きな違いはありません。

そのような状況でどの方法を使用するかについて、ある種のベストプラクティスはありますか? または、おそらくまったく異なるアプローチがあります。

いいえ。しかし、別のプログラマーにとってはよりきれいに見えるので、ネストされたループを使用したいと思います。必要に応じて、すべてのサブループの周りに関数をラップできます。

于 2013-01-23T21:40:43.280 に答える