(PHP)如何将数组列表正确地连接到file_put_contents的字符串中



我一直在玩一个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>

最新更新