Php 比较同一变量的值时出错
我在验证方面有点问题。我这里有一个这样工作的代码片段:如果查询字符串中没有设置Php 比较同一变量的值时出错,php,Php,我在验证方面有点问题。我这里有一个这样工作的代码片段:如果查询字符串中没有设置pizza\u size变量,并且产品类别的ID为1(对应于pizzas),或者设置了该变量,但是pizza\u size值不等于small,medium或big这需要返回到products.php页面,并显示未选择大小的消息。我正在尝试: if(!isset($_GET['pizza_size']) || $_GET['pizza_size'] != "small" || $_GET['pizza_size'] !=
pizza\u size
变量,并且产品类别的ID为1(对应于pizzas),或者设置了该变量,但是pizza\u size
值不等于small
,medium
或big
这需要返回到products.php页面,并显示未选择大小的消息。我正在尝试:
if(!isset($_GET['pizza_size']) || $_GET['pizza_size'] != "small" || $_GET['pizza_size'] != "medium" || $_GET['pizza_size'] != "big" && $category_id == 1)
{
redirect_to('products.php?message=no-size-informed');
}
else //Add the product
问题是这不起作用。即使pizza\u大小
对应于小
,中
或大
我也会收到错误消息。但如果我只使用一个比较,这很有效,比如:
if(!isset($_GET['pizza_size']) || $_GET['pizza_size'] != "small" && $category_id == 1)
{
redirect_to('products.php?message=no-size-informed');
}
但我需要用3种尺寸进行验证。如何使用所有三个可能的变量进行验证?谢谢 你必须这样做:
if(($category_id == 1)
&& !(isset($_GET['pizza_size']) && in_array($_GET['pizza_size'], array('small', 'medium', 'big')))
) {
redirect_to('products.php?mesage=no-size-informed');
}
else {
// Add the product
}
if(($category_id == 1)
&& (isset($_GET['pizza_size'] && !in_array($_GET['pizza_size'], array('small', 'medium', 'big')) || !isset($_GET['pizza_size']
) {
redirect_to('products.php?mesage=no-size-informed');
}
如果在中间部分加上一组额外的圆括号会怎么样?如果(!isset($GET['pizza_size'])和($GET['pizza_size']!=“small”;$GET['pizza_size']!=“Middle”;$GET['pizza_size']!=“big”)&$category_id==1)运算符将首先应用,,,因此如果$GET['pizza_size']不存在,它将给出错误@Dyan顺便问一下你的工作是什么error@veelen同样的事情。即使大小是小的、中的或大的,我也有错误信息。@MohammadAlabed即使大小变量是小的、中的或大的,我也有消息“没有通知比萨饼的大小”。尝试将所有的或包装在()
中,比如(…或…)&&&&
,如果$获得['Pizza\u size',这将导致未定义的注意
未设置,这就是OP以开头的原因!isset($\u GET['pizza\u size'])
@Sean,不错。我修改了答案以反映这一点。谢谢!工作得很好!拥抱!我相信OP想要检查…&&(!isset($_GET['pizza_size'].| |!in_array($_GET['pizza_size']),…
没错,但是如果使用不存在的变量调用in_array函数,则可能会发生错误,因此您必须首先检查变量是否已设置。感谢您的帮助!