PHP根据输入字段中给出的数字显示多个星号

时间:2014-09-10 06:29:25

标签: php forms

我想要完成的是根据我输入的数字显示星号或星号()。例如,如果我输入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>

3 个答案:

答案 0 :(得分:5)

str_repeat()

怎么样?
$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, "*");