我有这段代码:
<form method="POST">
<input type="text" name="my">
<input type="submit" name="submit">
</form>
<?php
if (isset($_POST['my'])) {
$ali = $_POST['my'];
}
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
}
?>
问题是当我想打开窗户时我有错误!
注意:未定义的变量:第11行的C:\ Program Files(x86)\ EasyPHP-5.4.0RC4 \ www \ test \ index.php中的ali
如何检查交换机的值?
答案 0 :(得分:5)
如果$_POST['my']
设置为 NOT ,则不设置$ali
,因此未设置尝试使用未定义符号($ali
运行的开关并没有定义)。
这样的事情会更合适:
<?php
if (isset($_POST['my'])) {
switch ($_POST['my']) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
}
}
?>
答案 1 :(得分:3)
您可以这样做:
if (isset($_POST['my'])) {
$ali = $_POST['my'];
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
}
}
问题发生在你
之后if (isset($_POST['my'])) {
$ali = $_POST['my'];
}
然后您在$ali
中使用了switch()
,因此如果数据已发布,那么就可以了,但如果您只是加载页面,则不会获得$ali
和{{{{}}的任何值1}}未定义导致错误。
答案 2 :(得分:3)
这是您可以尝试的另一种方式。
<?php
switch ($_POST['my']) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
default:
echo "Doesn't match 1, 2 or 3";
break;
}
?>
答案 3 :(得分:2)
您检查是否设置了$ _POST [&#39; my&#39;]。但如果不是,那么你仍然继续前进。这就是产生通知的原因。
在某些情况下,如果没有设置$ _POST [&#39; my&#39;],也可以做某事。一起停止开关盒可能不是最好的选择。
我的解决方案:
<form method="POST">
<input type="text" name="my">
<input type="submit" name="submit">
</form>
<?php
if (isset($_POST['my'])) {
$ali = $_POST['my'];
}
else {
$ali = -1;
}
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
default:
echo "no match";
}
?>
这样$ ali总是被设置,你不会得到通知。
答案 4 :(得分:1)
你有这个问题,因为如果没有设置$ _POST ['my'],你就不会设置$ ali,然后你可以使用你的开关。
简单的答案是将开关包含在if:
中<form method="POST">
<input type="text" name="my">
<input type="submit" name="submit">
</form>
<?php
if (isset($_POST['my'])) {
$ali = $_POST['my'];
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
}
}
?>
或者你也可以为你的$ ali设置一个默认值,这样你至少得到一些输出:
<form method="POST">
<input type="text" name="my">
<input type="submit" name="submit">
</form>
<?php
if (isset($_POST['my'])) {
$ali = $_POST['my'];
} else {
$ali = '1'; // default value in case $_POST['my'] is NOT set
}
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
}
?>
答案 5 :(得分:1)
$_POST
数组在您发送包含method=POST
的表单后会激活或填充。也就是说,当您单击提交按钮时。因此,在单击提交按钮之前执行脚本时,if语句中的if表达式为false,并且不会执行并继续执行,使用不存在的$ ali变量。将switch语句放在if语句中。
此外,您必须检查提交按钮名称字段是否存在,因为如果设置了该字段,则所有其他字段也都存在。此外,当switch语句中的其他所有内容都为false时,最好使用'default'作为回退。所以正确的代码就是这个......
<?php
if (isset($_POST['submit_name_attribute'])) {
$ali = (empty($_POST['my'])) ? '' : $_POST['my'];
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
default:
echo "no value";
}
}
答案 6 :(得分:0)
我迟到了,但我的方法略有不同
<Image Source="ms-appx:///Assets/SunBurst.png" x:Name="RotateImage" Stretch="Fill" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="2" ScaleY="2"/>
<RotateTransform Angle="0"/>
</TransformGroup>
</Image.RenderTransform>
</Image>
与其他答案没什么不同,但我认为速记if语句更整洁。基本上如果未设置$ POST,它将在$ ali中放入一个空值,然后将使用默认值。
答案 7 :(得分:0)
您可以这样做: 首先用一些像false这样的值初始化$ ali,你可以稍后检查 在案例中。 例如。 :
<form method="POST">
<input type="text" name="my">
<input type="submit" name="submit">
</form>
<?php
$ali=false;
if (isset($_POST['my'])) {
$ali = $_POST['my'];
}
switch ($ali) {
case '1':
echo "one";
break;
case '2':
echo "two";
break;
case '3':
echo "three";
break;
case false:
echo '$ali is\'t set';
break;
case '':
echo '$ali is blank';
break;
}
?>