我想做这样的事情:
所以它总是三个一组,每个级别都以字母递增。第一级是A,第二级是B,C,D,E等。这些数字也按升序列出。 A级只能达到1,B有3,C有9,D有27,依此类推。
这很容易手动生成,将字母转换为ASCII等效字符,添加一个并再次将它们转换为等效字符。问题是,我必须将它循环到S,例如,我的思绪变得越来越混乱,试图将循环放在循环中。
我得到了什么(toLetter和toNumber确实做了他们所做的事):
echo "<ul><li>";
echo "A1";
echo "<ul><li>";
$b = toNumber(A);
$b++;
$b = toLetter($b);
$bnum = 1 - 1;
$bnum = $bnum * 3;
$bnum++;
echo $b;
echo $bnum."</li>";
$bnum++;
echo "<li>".$b;
echo $bnum."</li>";
$bnum++;
echo "<li>".$b;
echo $bnum."</li>";
制作本:
我真的无法弄清楚如何循环所有东西,直到Z.
答案 0 :(得分:3)
一个非常简单的版本,只能达到'C'级别;必要时增加。
<?php
function outputListItems($char) {
static $index = array('A' => 1);
if (!isset($index[$char])) {
$index[$char] = 1;
}
for ($i = 0; $i < 3; $i++) {
echo '<li>';
echo $char;
echo $index[$char]++;
if ($char < 'C') {
echo '<ul>';
$nextChar = $char;
outputListItems(++$nextChar);
echo '</ul>';
}
echo '</li>';
}
}
?>
<ul>
<li>
A1
<ul><?php outputListItems('B'); ?></ul>
</li>
</ul>
A
被视为特殊追逐,因为它只有一个条目。
答案 1 :(得分:1)
在PHP中,您可以在字符串上使用++,因此您不需要Letter / toNumber 为了支持无限制的嵌套,你需要一个递归(或者至少它会更容易)