我正在尝试为fizz buzz游戏编写代码......我完成了它...但问题是我需要从用户那里获取输入,我的代码仅适用于我在代码...任何人都可以指定任何方式,我可以从用户输入... post方法没有工作.. 我的代码如下......
<html>
<body>
<form method="post">
enter Value of A
<input type="text" name="A">
enter value of B
<input type="text" name="B">
enter value of N
<input value="text" name="N">
</form>
</body>
</html>
<?php
$N=$_POST["N"];
$A=$_POST["A"];
$B=$_POST["B"];
while($N!=100) {
if($N%$A==0 & $N%$B==0) {
echo"FizzBuzz\n";
}
elseif ($N%$A==0) {
echo"Fizz\n";
}
elseif ($N%$B==0) {
echo"buzz\n";
}
else
echo"$N \n";
$N=$N+1;
}
?>
答案 0 :(得分:1)
OP明确表示它应该看起来像一个从文件中获取输入的控制台应用程序,我可以准备的答案有几个:
首先,不需要HTML,因为没有真正的用户会打开Web浏览器,因为一切都将从CLI发生,并且没有输入,只有文件。
要将文件作为输入,您可能需要fgets()
。该文件可以从标准输入发送,因此fgets(STDIN)
将完成工作。但是,这实际上取决于文件的格式化方式。
在一个理想的情况下,我有文件test.txt
,每个文件都有不同的行:
50
100
200
要使用test.txt
作为标准输入,您可能需要:
<?php
$input = explode("\r\n",stream_get_line(STDIN, 1024));
//Explode the news lines as array, to assign then as N, A and B
$N=$input[2];
$A=$input[0];
$B=$input[1];
while($N!=100) {
if($N%$A==0 & $N%$B==0) {
echo"FizzBuzz\n";
}
elseif ($N%$A==0) {
echo"Fizz\n";
}
elseif ($N%$B==0) {
echo"buzz\n";
}
else
echo"$N \n";
$N=$N+1;
}
?>
现在您从控制台运行脚本
$ php path/to/file/file.php < path/to/input/test.txt
当然,你可以在打开文件等待输入的时候进行成本计算,这可以是文件名
$stdin = fgets(STDIN);
然后$ php path/to/file/file.php
将等待输入内容。
如果它是有效的文件名,您可以使用file_get_contents($stdin);
或者,您可以使用CLI模式$argv
数组中的命令行参数:
$file = file_get_contents(__DIR__.DIRECTORY_SEPARATOR.$argv[1]);
$input = explode("\r\n", $file);
这将打开文件,在PHP文件的目录中以给定名称作为第一个参数
$ php path/to/file/file.php test.txt