你好我有问题,像有人帮我解决这个问题。它的问题 注意: 未定义的变量: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
答案 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>