php - 根据计数用php生成数字字符串

标签 php string loops

我正在构建一个使用 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,以便自动构建布局和 ascensor,即使在类别存档页面中也是如此。

我唯一坚持的是根据要显示的帖子数生成此字符串。

例如,如果我有 10 个帖子要显示,我希望有 4 行,每行 3 个帖子(在第四行中,当然只有一个帖子)。我希望总是有一些或多或少的平方,4 x 5 或 7 x 8 或 6 x 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);

关于php - 根据计数用php生成数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16303774/

相关文章:

javascript - 难以创建 Jquery 循环以重复更改背景颜色和动画元素

php - 如何创建第二个主列(自动增量)

php - 开关,多个案例的相同值

c - 缩放二维数组 C

java - 使用 ArrayList 显示多个 vector 对象 Java

C++在文本文件中的特定字符后插入新行

php - 如何自动将电子邮件附件文件名转换为 UTF-8(使用 Mail_mimeDecode)

php 从服务器检测本地主机的安全方法

c++ - 将长字符串分成多个 C++

java - 分割长行并缩进并输出