在应用了wrapping objects using math operator之后,我认为它将会结束。但不是。到目前为止。
<?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++;
}
?>
在我必须放置的代码和第二个之后的广告中,成为第三个对象。然后将这三个全部包裹在<div class="row">
中(之后由于设计原因而无法解决)。我以为我会回去应用一个开关,但是如果有人在数组中添加了更多元素,交换机可以正确包装,那么最后剩下的两个元素将被公开包装。
我可以在第三个位置向阵列添加“广告”吗?这会让事情变得简单,只会让我猜测如何包装第一个和第三个,第四个和第六个,等等。
答案 0 :(得分:1)
你可以将数组分成两部分,插入你的广告然后追加其余部分:
// 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关于使用比较运算符而不是赋值的说明将有助于解决问题。
答案 1 :(得分: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 />';
}