2016-10-02 11 views
0

私は単純なPHP foreachループを使用して生成されたフォトギャラリーを持っており、ギャラリー内に画像として広告を挿入したいと思います。foreachループ内でphp配列から単一のランダムキーを取得

広告の配列は次のようになります。

$links = array(
    'http://a.com' => 'a.jpg', 
    'http://b.com' => 'b.jpg', 
    'http://c.com' => 'c.jpg', 
); 

今、私は繰り返し、すべてのx量しばらくまだforeachループ内でこの配列から単一ペアlink + imageを取る必要があります。

だから私はおそらくここでそれをやっている必要があります。

if($count % 5 == 0){ 
//get random item 
} 
$count++; 

foreachループの外$count = 0;滞在。

私はしばらくforeachループ内で一つだけアイテムのランダムリンクの私の配列からを取るための方法を考え出したていません。

基本的には最終的な結果は次のようになります。

<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 

<a href="link"> 
<img src="picture"></img> 
</a> 

<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 
<img src="path"></img> 

<a href="link"> 
<img src="picture"></img> 
</a> 

などimg'sのセットの途中リンクは私のアレイとのセットからランダムに選ばれた一つであり

img'sは私のforeachループのように正常に生成されます。

今まで私が必要としているのではない5 img'sごとにリンク全体として配列全体を配置することができました。このアイデアは、フォトギャラリーを通して「広がる」ことです。

私はあまりにも長い間働いているか、それが不可能なのか、それとも間違っているのでしょうか?

注:広告を繰り返すかどうかは関係ありません。

+1

したがって、あなたは1つしか望みませんが、繰り返しても気にしません。私はあなたが望む出力を正確には確信していません。明確にすることはできますか? –

答えて

-1

を編集します。あなたの質問をもう一度読み終えたら、あなたはすでに作業しているはずです。ちょっとだけではなく、完全なコードを表示できますか?実際に何が間違っているのかを確認できますか?


注:ここでは、以下のすべてはOPが実際に求めていたものを、おそらくではありません私のオリジナルの答えでした。

質問が完全にはっきりしていないため、これが探しているものであるかどうかは完全にはわかりません。しかし、私はこれが何をしているか、それはすべての5つの要素(または任意の値あなたがもしに入れ、その後、配列の順序をランダム化します基本的に

$links = shuffle($links); 
if($count % 5 == 0){ 
//get random item 
$output = array_pop($links); 
} 
$count++; 

...推測を持って、あなたはこのような何かを行うことができますステートメント)、$ outputを配列の最後の要素の値に設定し、配列の最後の要素を削除して再度使用できないようにします。そうすることで、次にif文がヒットし、それが真であると評価されるとき、配列の最後の要素を取ることになります。

あなたが達成しようとしているものの目的を誤解している場合は、より明確に説明してください。私はそれに応じて喜んで回答を調整します。

0

あなたがループを開始する前に、必ずキーを破壊しない作り、広告をシャッフル:選択し

if($count % 5 == 0){ 
    //get random item 
    $item = $links_shuffled[($count/5) % count($links)]; 
    // output link: 
    // ... 
} 
0

使用array_rand:あなたが持っているループの中で次に

$keys = array_keys($links); 
shuffle($keys); 
foreach($keys as $key) { 
    $links_shuffled[$key] = $links[$key]; 
} 

を0回目の繰り返しごとにランダムな$ link要素:

$count = 0; 
foreach ($images as $image) { 
    if($count % 5 == 0){ 
     $addUrl = array_rand($links); 
     $addImage = $links[$addUrl] 
    } 
    $count++; 
} 
+0

これは画像だけを取得し、URLは取得しません。 – ynef

+0

私はちょうど私の答えを編集しました。 array_randはキーを返し、キーはあなたのURLです、そうですか? –

関連する問題