我想要完成的是根据我输入的数字显示星号或星号()。例如,如果我输入2,表单将显示2个星号(* )。在我的代码中,我不认为字符串连接不是正确的方法,因为我没有得到我想要的结果。我使用for循环。如果你能告诉我如何以正确的方式编码或者在这种情况下for循环是错误的,我将不胜感激。这是迄今为止的代码。
<?php
$number = $star = '';
if (isset($_POST['submit'])) {
$number = (int)$_POST['number'];
$star = '*';
for ($i = 0; $i < $number; $i++) {
$star .= $star;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Star</title>
</head>
<body>
<!--Form-->
<form id="form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<label for="number">Enter number</label>
<input id="number" type="number" name="number" size="3" maxlength="3" required>
<input type="text" readonly="readonly" value="<?php echo $star; ?>">
<input type="submit" name="submit" value="Display">
</form>
</body>
</html>
答案 0 :(得分:5)
$star = str_repeat("*", $number);
使用当前代码,您将始终获得更多星号(如@AeJey的评论中所述),因为您从一个*
开始,您自己加入**
,然后再次加入自己获得****
...
答案 1 :(得分:1)
@Unamata Sanatarai str_repeat()
在这种情况下效果很好,所以请改用它。
不要忘记一些错误检查:
<?php
if (isset($_POST['submit'])) {
$number = (int) $_POST['number'];
if ($number > 0) {
$star = str_repeat("*", $number);
} else {
$star = "Enter number greater than zero!";
}
}
?>
希望这会有所帮助..
`
答案 2 :(得分:0)
请勿在$ star($star .= $star;
)上连接$ star。选择另一个变量 - $out .= $start
并输出该变量。
或者您可以使用string padding功能重复所需的次数。
$number = (int) $_POST["number"];
$out = str_pad("", $number, "*");