2

数学演算子を使用してオブジェクトをラップするものを適用した後、私はそれが終わるだろうと思った。しかし、違います。はるかに。

<?php
$faces= array(
  1 => '<div class="block">happy</div>',
  2 => '<div class="block">sad</div>',
  (sic)
  21 => '<div class="block">angry</div>'
);

$i = 1;
foreach ($faces as $face) {
  echo $face;
  if ($i == 3) echo '<div class="block">This is and ad</div>';
  if ($i % 3 == 0)  {
    echo "<br />"; // or some other wrapping thing
  }
  $i++;
}

?>

コードでは、2番目のオブジェクトの後に配置して広告を表示し、それによって3番目のオブジェクトになります。次に、3つすべてをaでラップします<div class="row">(後のbrは、設計上の理由で機能しません)。スイッチの適用に戻ると思いましたが、誰かがスイッチが適切にラップできる要素を配列に追加すると、残りの2つの要素がオープンにラップされます。

配列の3番目の位置に「広告」を追加できますか?そうすれば、物事が簡単になり、1番目と3番目、4番目と6番目などをどのようにラップするかを推測するだけで済みます。

4

2 に答える 2

1

配列を2つに分割し、広告を挿入して、残りを追加するだけです。

// Figure out what your ad looks like:
$yourAd = '<div class="block">This is and ad</div>';

// Get the first two:
$before = array_slice($faces, 0, 2);
// Get everything else:
$after = array_slice($faces, 2);
// Combine them with the ad. Note that we're casting the ad string to an array.
$withAds = array_merge($before, (array)$yourAd, $after);

代入ではなく比較演算子を使用することについてのnickbのメモは、ラッピングを理解するのに役立つと思います。

于 2012-06-30T02:59:31.867 に答える
1

まず、広告を挿入します。

array_splice($faces, 2, 0, array('<div class="block">this is an ad</div>'));

次に、ラッピングを適用します。

foreach (array_chunk($faces, 3) as $chunk) {
    foreach ($chunk as $face) {
        echo $face;
    }
    echo '<br />';
}
于 2012-06-30T03:27:42.423 に答える