我正在建立一个网站,我使用ascensor.js(ascensor.js
为了使其工作,我们必须提供像这样的字符串“1 | 1& 1 | 2& 1 | 3& 1 | 4& 2 | 1& 2 | 2& 2 | 3& 2 | 4& 3 | 1& 3 | 2& 3 | 3& 3 | 4“
这将允许脚本构建一种导航。
我将脚本改编成wordpress,以便自动构建布局和提升器,即使在类别存档页面中也是如此。
我唯一坚持的是根据要显示的帖子数生成此字符串。
例如,如果我要显示10个帖子,我希望有4行,每行3个(第4行,当然只有一个帖子)。我想总是有一些或多或少的平方,4乘5或7乘8或6乘6。 因此,如果我有12个帖子,我需要的字符串就像上面那个。
你会如何用PHP生成这个?因为目前我这样做; - )
$countpost=count($postslist);
if ( $countpost === 10) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2";}
if ( $countpost === 11) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3";}
if ( $countpost === 12) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4";}
if ( $countpost === 13) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1";}
if ( $countpost === 14) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1 & 4|2";}
if ( $countpost === 15) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1 & 4|2 & 4|3";}
if ( $countpost === 16) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1 & 4|2 & 4|3 & 4|4";}
在某些页面中,我会列出大约50个帖子,我想用php生成这个。
欢迎任何帮助!
谢谢。
答案 0 :(得分:4)
我建议计算大于实际页数的最小平方数:
$columns = pow(ceil(sqrt($countpost)),2);
然后您可以确定将包含的行数:$rows = ceil($countpost/$columns);
现在您可以使用for
循环生成字符串:
$arr = []; // array() before PHP 5.4
for( $y=0; $y<$rows; $y++) {
for( $x=0; $y*$columns+$x < $countpost && $x < $columns; $x++) {
$arr[] = ($y+1)."|".($x+1);
}
}
$AscensorMap = implode(" & ",$arr);