我想每行订购3篇文章,而每隔一行一篇文章都有一个宽大的图像,显示三个中的两个点。 这是我提出的代码,但对于那些简单易行的东西来说似乎很复杂。示例输出在底部。
也许有人知道可以做同样但更简单的事情。
谢谢!
<?php
$i = 0;
$x = 0;
$first = false;
$three = false;
$five = true;
foreach( range( 0, 27 ) as $k ) {
if( $x != 0 && $x % 3 == 0 ) {
echo "\n";
}
$x++;
$i++;
if( !$first && $i == 5 ) {
$i = 0;
$x++;
$first = true;
echo '[__]';
}
elseif( $first && !$three && $i == 4 ) {
$i = 0;
$x++;
$three = true;
$five = false;
echo '[__]';
}
elseif( $first && !$five && $i == 6 ) {
$i = 0;
$x++;
$three = false;
$five = true;
echo '[__]';
}
else echo '[]';
}
?>
输出:
[][][]
[][__]
[][][]
[__][]
[][][]
[][__]
[][][]
[__][]
[][][]
[][__]
[][][]
答案 0 :(得分:1)
假设你有27篇文章
$articles = 27 / 3;
我有这种方式希望它可以与你合作更新
<?php
$x = false;
for ($i = 0; $i < $articles; $i++) {
for($j = 0;$j < 3;$j++) {
if ($i % 2 == 0) {
if ($x && $j % 2 == 0) {
echo '[ ] ';
} else {
echo '[ _ ] ';
$x = !$x;
$j++;
}
} else {
echo '[ ]';
}
}
echo '<br />';
}
?>
这是我的结果
更新1
只需将第一个循环更改为
$i=1
所以它不能修改2所以你得到前三个,然后改变
if($x && $i % 2 == 0)
像这样真实
if(!$x && $i % 2 == 0)
示例
<?php
$count = 7;
$articles = ceil($count / 3);
$articles = $articles + ceil(ceil($articles/2) / 3);
$x = false;
for ($i = 1; $i <= $articles; $i++) {
if ($count == 0) break;
for($j = 0;$j < 3;$j++) {
if ($count == 0) break;
if ($i % 2 == 0) {
if (!$x && $j % 2 == 0) {
echo '[ ] ';
} else {
echo '[ _ ] ';
$x = !$x;
$j++;
}
} else {
echo '[ ]';
}
$count--;
}
echo '<br />';
}
?>
图片结果
答案 1 :(得分:1)
如果有人需要它作为twig实现:
{% import _self as macros %}
{% set rows = ( items|length / 3 ) %}
{% set x = false %}
{% set y = 0 %}
{% for i in 1..rows+2 %}
{% set skip = false %}
{% for j in 0..2 %}
{% if skip %}
{% set skip = false %}
{% else %}
{% if i is divisible by(2) %}
{% if x == false and j is divisible by(2) %}
{{ macros.item( items[y] ) }}
{% set y = y + 1 %}
{% else %}
{{ macros.item( items[y], true ) }}
{% set y = y + 1 %}
{% set skip = true %}
{% if x == false %}
{% set x = true %}
{% else %}
{% set x = false %}
{% endif %}
{% endif %}
{% else %}
{{ macros.item( items[y] ) }}
{% set y = y + 1 %}
{% endif %}
{% endif %}
{% endfor %}
<div class="clearfix"></div>
{% endfor %}
macro = bootstrap块元素,如果设置为true,则col宽度从4到8覆盖两个点 - 必须实现跳过变量,因为在twig中你无法编辑循环索引 - 添加了额外的独立计数器来完成文章数组,基于/ 3的行+2和每页共33篇文章。