Echo语句打印值';1';


Echo statement printing the value '1'

当我想测试值是否正确地从HTML表单传递到PHP时,我发现echo语句有问题。这是HTML文本框代码

<div class = form-group>
                    <label for = 'bcaa'>BCAA 5gms Cost</label>
                    <input type = 'text' class = 'form-control' name = 'bcaa'>
                </div>

下面是获取值并简单打印的PHP代码。

<?php
$bcaacost = isset($_POST['bcaa']) ;
echo $bcaacost;
?>

文本框中给定的值不打印,但只打印"1",添加的回声语句越多,打印的中"1"的数目就越多

echo "something";
echo "blah blah";

输出为

11

这是什么原因?我需要做些什么来解决这个问题?

删除变量赋值的isset(),因为它检查是否设置了可验证的$_POST['bcaa']

$bcaacost = $_POST['bcaa'];

完整代码

<?php
$bcaacost = $_POST['bcaa'];
echo $bcaacost;
?>

阅读有关isset()

的更多信息

isset()根据变量集是否返回truefalse

$bcaacost = isset($_POST['bcaa']) ; // return true / 1
echo $bcaacost; // prints 1

应该像

if(isset($_POST['bcaa'])) {
    echo $_POST['bcaa'];
}

或者,如果你想打印一些默认值,那么-

$bcaacost = isset($_POST['bcaa']) ? $_POST['bcaa'] : 'Default';
echo $bcaacost;
if(isset($_POST['bcaa'])) {
    $bcaacost = $_POST['bcaa'] ;    
    echo $bcaacost ;
}

否则,isset($_POST['bcaa'])将打印10

isset()检查变量是否存在,并返回true(1)或false(0)

要查看$_POST['bcaa']的内容,您需要检查它是否存在,即isset(),然后使用变量的内容

<?php
$bcaacost = isset($_POST['bcaa']);
if ( $bcaacost ) {
    echo $_POST['bcaa'];
}
?>

或者更简单地说

if ( isset($_POST['bcaa']) ) {
    echo $_POST['bcaa'];
}

关于你的建议:

echo "something";
echo "blah blah";

将创建不可能的11。一定是其他原因导致了这种情况,否则您会对创建11输出的原因感到困惑

isset的结果为true或false。在您的情况下,结果是真的,它被分配回$bcaacost,这就是为什么它返回1。

使用以下代码:

<?php
$bcaacost = isset($_POST['bcaa'])?$_POST['bcaa']:"not set";
echo $bcaacost;
?>