ISSET函数未定义变量变量

时间:2015-02-02 16:28:47

标签: php isset notice

你好我有问题,像有人帮我解决这个问题。它的问题 注意: 未定义的变量:v in C:第17行\ xampp \ htdocs \ something \ something2.php ,我的代码是:

<form id="priklad" method="post">
    <label>Obvod kruhu:</label>
    <?php IF (isset($_POST['v'])) {
            $_POST['v'];
        }
    ?>
    <label>r:</label><input type="text" name="r"/>
    <input type="submit" value="Vypočti"/></br>
    <label><?php echo 2*$v;?> cm</label>
</form>

编辑:

<form id="priklad" method="post">
    <label>Obvod kruhu:</label>
    <?php If (is_numeric($_POST['v'])) {
            $v = $_POST['v'];
        }
    ?>
    <label>v:</label><input type="text" name="v"/>
    <input type="submit" value="Vypočti"/></br>
    <label><?php echo 2*$v;?> cm</label>
</form>

我即将收到这些错误 注意:未定义的索引:第11行的C:\ xampp \ htdocs \ something \ something2.php中的v和注意:未定义的变量:第17行的C:\ xampp \ htdocs \ something \ something2.php中的v

3 个答案:

答案 0 :(得分:0)

正在发生的事情是您的值v$_POST['v']的隐含值不同。如Tim所述,没有$v =语句所以实际上你的回声输出没有输出任何乘以2.

这会抛出你已经接到的警告。

所以解决方案可能是:

<form id="priklad" method="post">
    <label>Obvod kruhu:</label>
    <?php If (is_numeric($_POST['v'])) {
            $v = $_POST['v'];
        }
    ?>
    <label>r:</label><input type="text" name="r"/>
    <input type="submit" value="Vypočti"/></br>
    <label><?php echo 2*$v;?> cm</label>
</form>

我使用了is_numeric,因为你使用echo产生一个值x 2,所以更有意义的是检查V是一个数字而不是一个字符串。

更新

好的,那么先停下来看看第11行是什么?是$_POST['v']吗?如果是这样,那么你可以回到原因的来源 - 用以下内容替换第11行(注释掉,不要删除它):

print_r($_POST);

这将输出与数组$ _POST相关的所有值。

如果你没有看到'v'的值(我猜你可能不会)那么这意味着这个值没有在之前的HTML页面中设置,所以回去检查你的表单是否提交了一个输入为:

<input name='v' value="something">

未定义的索引意味着数组($ _POST)不包含$_POST['v']下存储的任何信息。

您能确认您的POST是否符合预期,并且您确实希望发布这意味着您需要提交表单而不是GET或其他方法,例如index.php?v=10

通知:

PHP确实有通知声明,但它们只是 通知,它们不是错误甚至是警告,它只是PHP告诉你发生了什么。这不会破坏你的代码,但在你的IF语句上面添加上面

可能会很好:

$v = 0; 

这将建立变量$ v并为其赋值。如果$ _POST ['v']存在则会更新以反映出来。

答案 1 :(得分:0)

该错误实际发生的是,您的变量$v未被初始化,因为代码未进入if条件。

if(is_numeric($_POST['v'])){
   $v = $_POST['v'];
}

您假设条件is_numeric($_POST..)true但可能不是,这意味着变量$v永远不会被初始化。因此,您遇到的错误非常正常。

您可以继续处理您的病情,但必须检查之后的变量

if(is_numeric($_POST['v'])){
   $v = $_POST['v'];
}

echo 2 * (isset($v) ? $v : 1);

上述代码可能会有所改进。如果is_numeric返回false,则可以设置更好的代码/逻辑来设置变量的默认值。

$v = 1; // default value

if(is_numeric($_POST['v'])){
  $v = $_POST['v'];
}

echo 2 * $v;

答案 2 :(得分:0)

您的代码必须是这样的。

<form id="priklad" method="post">
    <label>Obvod kruhu:</label>
    <?php 
    $v = '';
    If (is_numeric($_POST['v'])) {
            $v = $_POST['v'];
        }
    ?>
    <label>v:</label><input type="text" name="v"/>
    <input type="submit" value="Vypočti"/></br>
    <label><?php echo (($v)? 2*$v : 'Its not numeric value');?> cm</label>
  </form>