繁体   English   中英

当我尝试回显已发布的字符串时,输出为布尔值

[英]When I try to echo a posted string, the output is a boolean

我试图提高我的PHP技能,当我发布姓氏和名字时,echo输出1 1 不管我放什么,回声都是1 1 为什么我的代码这样做?

<?php
    error_reporting(E_ALL); ini_set('display_errors', '1');
    if (isset($_POST['firstname'])&& isset($_POST['lastname'])){
        $firstname=isset($_POST['firstname']);
        $lastname=isset($_POST['lastname']);
        echo $lastname;
        echo $firstname;
    }
?>

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Untitled Document</title>
    </head>

    <body>
        <form action="practice2.php" method="post" name="user" >
            Please Enter your First Name: <br>
            <input type="text" name= "firstname"id="firstname">
            <br>
            Please Enter your Last Name: <br>
            <input type="text" name="lastname" id="lastname">

            <input type="submit" name="Submit">

        </form>
    </body>
</html>

isset方法返回一个布尔值,该布尔值在打印时将向您显示1.您想要的是:

if (isset($_POST['firstname'])&& isset($_POST['lastname'])){
    $firstname = $_POST['firstname'];
    $lastname  = $_POST['lastname'];

    echo $lastname;
    echo $firstname;
}

如果他们在你的设置你已经检查if声明,没有任何理由在其内再次检查。

您可以通过尝试更轻松地查看原始代码的行为

# this will output "1". isset is returning "true" in your original example
echo true;

为了补充他们已经说明手头问题的其他答案,请提交以下内容,以展示如何将代码减少70%。

您可以替换整个块:

if (isset($_POST['firstname'])&& isset($_POST['lastname'])){
    $firstname=isset($_POST['firstname']); // issue has been addressed about this
    $lastname=isset($_POST['lastname']); // issue has been addressed about this
    echo $lastname;
    echo $firstname;
}

并使用三元运算符和回波,所有这些都汇总为一个
回显/检查/分配 ):

echo $firstname=isset($_POST['firstname']) ? $_POST['firstname'] : '';
echo $lastname=isset($_POST['lastname']) ? $_POST['lastname'] : '';

或使用!empty()

echo $firstname=!empty($_POST['firstname']) ? $_POST['firstname'] : '';
echo $lastname=!empty($_POST['lastname']) ? $_POST['lastname'] : '';

如果要保留值并在输入中回显,则可以使用三元运算符并将其用作值:

旁注:仅当您使用了如上所述的三元运算符时,此方法才有效。

Please Enter your First Name: <br>
<input type="text" name= "firstname"id="firstname" value="<?php echo !empty($_POST['firstname']) ? $_POST['firstname'] : ''; ?>">
<br>
Please Enter your Last Name: <br>
<input type="text" name="lastname" id="lastname" value="<?php echo !empty($_POST['lastname']) ? $_POST['lastname'] : ''; ?>">

要了解三元运算符,请访问:

使用isset()可以检查是否已设置值,但是不会获得它的值。 它返回一个布尔值-在您的情况下为true ,其echo为1。

代替

$firstname=isset($_POST['firstname']);
$lastname=isset($_POST['lastname']);

尝试

$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];

并且您应该获得所需的输出。

步骤1:检查按钮是否已提交(如果已提交)。 步骤2:使用$ _POST ['']从文本框中获取值。 步骤3:回显

    <?php
      if(isset($_POST['Submit'])){
        $firstname =$_POST['firstname'];
        $lastname = $_POST['lastname'];


        echo $firstname . " " . $lastname;

}
    ?>

    <!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Untitled Document</title>
        </head>

        <body>
            <form action="practice2.php" method="post" name="user" >
                Please Enter your First Name: <br>
                <input type="text" name= "firstname"id="firstname">
                <br>
                Please Enter your Last Name: <br>
                <input type="text" name="lastname" id="lastname">

                <input type="submit" name="Submit">

            </form>
        </body>
    </html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM