使用PHP根据计数生成数字字符串

我正在建立一个使用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乘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生成此帖子.

任何帮助欢迎!

谢谢.

解决方法:

我建议计算大于您实际页面数的最小平方数:
$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);
上一篇:javascript-遍历对象的嵌套数组


下一篇:header("location:test.php")跳转成功需要注意的