我一直在玩一个php输入函数,它将为游戏构建一个html页面,类似于wiki。一切都很顺利,但当试图将数组构建成字符串时,它会返回一些有趣的错误。
每一个涉及数组的代码都会发生这种情况,我已经剪下了一些独立运行的代码来节省时间,但就是弄不清楚。我使用Linux终端来运行脚本,当我将其设置为foreach循环内的echo时,它做得很好,但当我尝试将其构建为HTML文件时,它不会。
这是输入脚本:
echo "nHow many ranks were there (number)?:n";
$facInputRankLimit = readline();
echo "Please read carefully and supply the ranks in descending order (HIGHEST > LOWEST):n";
$facInputRankCount = 0;
$facInputRankString = "";
while ($facInputRankCount < $facInputRankLimit) {
echo "Enter a rank:n";
$facInputRanks[$facInputRankCount] = readline();
$facInputRankCount++;
}
foreach ($facInputRanks as $facInputRankList) {
$facInputRankString .= $facInputRankList.PHP_EOL;
}
然后我将把它构建成一个多行回波(而不是附加每一个代码块(:
$facBuildPage = <<<EOT
<?php
$facRankLimit = '$facInputRankLimit';
$facRanks = '$facInputRankString';
include('faction2.html');
?>
EOT;
带有反斜杠的变量将被构建到"$facFileName.php"中,并且将是通过该脚本(input2.php(输入的一组变量,每个脚本还将包括相同的html页面。
更糟糕的是,我得到了非常奇怪的结果。。。如果我创建了5个等级,每个等级都是"1 2 3 4 5",我实际上得到了"1 2 2 3",中间有两个垂直换行符。
编辑:我删掉了一些,我不想冒险没有添加足够的信息,但事实证明我添加了很多。
例如,我给出的输入是:
$facInputRankLimit = 5;
$facInputRanks[1] = 1; -> $facInputRanks[5] = 5;
但它打印:
1<br><br>2<br><br>3
@Deepkak-facton2.html中的相对代码是:
<div class="fpDivisions fpBox">
<span class="header">Ranks</span><br>
<?php
$facRankCount = 0;
while ($facRankCount < $facRankLimit) {
echo $facRanks[$facRankCount].'<br>';
$facRankCount++;
}
?>
</div>
我希望这将解决问题
<?php
echo "nHow many ranks were there (number)?:n";
$facInputRankLimit = readline();
echo "Please read carefully and supply the ranks in descending order (HIGHEST > LOWEST):n";
$facInputRankCount = 0;
while ($facInputRankCount < $facInputRankLimit) {
echo "Enter a rank:n";
$facInputRanks[$facInputRankCount] = readline();
$facInputRankCount++;
}
$array = [];
foreach ($facInputRanks as $facInputRankList) {
$array[] = "'".$facInputRankList."'";
}
$facInputRankString = "[".implode(",",$array)."]";
$facBuildPage = <<<EOT
<?php
$facRankLimit = '$facInputRankLimit';
$facRanks = $facInputRankString;
include('faction2.html');
?>
EOT;
echo $facBuildPage;
我已经为此创建了一个变通方法,以防将来有人需要帮助。它很简单,只需从HTML页面回显它,而不是创建一个同时运行PHP脚本和HTML代码的循环。
PHP输入代码:
echo "nHow many ranks were there (number)?:n";
$facInputRankLimit = readline();
echo "Please read carefully and supply the ranks in descending order (HIGHEST > LOWEST):n";
$facInputRankCount = 0;
while ($facInputRankCount < $facInputRankLimit) {
echo "Enter a rank:n";
$facInputRanks[$facInputRankCount] = readline();
$facInputRankCount++;
}
$facInputList = implode("<br>", $facInputRanks);
PHP输出代码:
$facBuildPage = <<<EOT
<?php
$facRanks = '$facInputList';
include('faction2.html');
?>
EOT;
file_put_contents("test/$facFileName.php", $facBuildPage);
HTML输出代码:
<div class="fpDivisions fpBox">
<span class="header">Ranks</span><br>
<?php echo $facRanks; ?>
</div>