0

画像ギャラリーを構築していて、プロモーション バナーをランダムなポイントに挿入して、特定のオファーをユーザーに宣伝したいと考えています。次の 2 つの配列がデータベース クエリからフィルター処理されているとします。

メディア画像の配列:

 Array
 (
      [0] => Array
         (
             [insertDate] => 2014-11-10 11:22:58
             [keyword] => standard
             [mediaClass] => image
             [mediaURL] => http://image1.jpg
             [promoURL] => 
         )

      [2] => Array
         (
             [insertDate] => 2014-11-10 11:23:18
             [keyword] => standard
             [mediaClass] => image
             [mediaURL] => http://image3.jpg
             [promoURL] => 
         )

      [3] => Array
         (
             [insertDate] => 2014-11-10 11:23:28
             [keyword] => standard
             [mediaClass] => image
             [mediaURL] => http://image4.jpg
             [promoURL] => 
         )

      [5] => Array
         (
            [insertDate] => 2014-11-10 11:23:48
            [keyword] => standard
            [mediaClass] => image
            [mediaURL] => http://image6.jpg
            [promoURL] => 
         )
    )

プロモーション画像の配列:

    Array
    (
       [1] => Array
          (
            [insertDate] => 2014-11-10 11:23:08
            [keyword] => promo
            [mediaClass] => image
            [mediaURL] => http://image2.jpg
            [promoURL] => http://www.google.com
          )

       [4] => Array
          (
            [insertDate] => 2014-11-10 11:23:38
            [keyword] => promo
            [mediaClass] => image
            [mediaURL] => http://image5.jpg
            [promoURL] => http://www.google.com
          )
     )

メディア画像のinsertDateによる並べ替え順序を維持しながら、プロモーション画像をランダムなインデックスでメディア画像配列に挿入するにはどうすればよいですか?

つまり、プロモーション バナーを画像のタイムラインに追加します。

4

2 に答える 2

0

大量の画像がない場合 (最大 100 など) は、自由に「手動で」配列を作成してください。まず、プロモーション アイテムの位置を含む配列を作成する必要があります。content 配列内のアイテム数、promo 配列内のアイテム数がわかります。それらの合計が最終的な配列のサイズになります。プロモーション アイテムの位置を計算するスマートな数学を計算します (たとえば、プロモーション アイテムを最初と最後に配置しない、2 つのプロモーション アイテムを隣接する位置に配置しない、場合によってはunset()いくつかのプロモーション アイテムが必要になる場合があります)。コンテンツ アイテムよりもプロモーション アイテムの方が多い)。

プロモーション ポジションがある場合は、コンテンツ アイテムをたどって最終的な配列にコピーすることができます。コンテンツをコピーする前に、現在の位置がプロモーション アイテム用に予約されているかどうかを確認する必要があります。そうであれば、プロモーション アイテムを最初にコピーする必要があります。出来上がり、最終的なアイテム リスト、プロモーション アイテムがインターリーブされました。

PHP は、自動有効化 (深く配置された要素の親ノードを作成する必要がない) のおかげで、この種のタスクに適しています。プログラミング、特に Web ページは次のとおりです。

  1. いくつかのデータ項目を配列に掘り下げます (SQL、JSON、API 呼び出しから)
  2. 異なるインデックスで最終的な配列を作成します(アイテムのマージ/合計が発生する可能性があります)
  3. 他のフィールドの他の配列の並べ替え、フィルター、ルックアップ
  4. 最終配列を表示する

同様のタスクは、就職の面接の質問にも表示されます (配列をスキャンし、何かをカウント/合計/マージします)。

于 2014-11-10T23:19:46.983 に答える