Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较同一变量的值时出错_Php - Fatal编程技术网

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函数,则可能会发生错误,因此您必须首先检查变量是否已设置。感谢您的帮助!