【问题标题】:If $_POST is empty Multiple function如果 $_POST 为空 多重功能
【发布时间】:2012-07-04 17:52:50
【问题描述】:

我有以下 $_POST 函数来检查“开始”、“中间”和“结束”的字段是否为空。

if(!empty($_POST['start'])) {
   $description = "a sentence".$_POST['start']." with something in the START.";
}

if(!empty($_POST['middle'])) {
   $description = "a sentence".$_POST['middle']." with something in the MIDDLE.";
}

if(!empty($_POST['end'])) {
   $description .= "a sentence".$_POST['end']." with something in the END.";
}

我想检查一个函数中的值,换句话说,我想同时检查多个值。我见过一些方法,但不确定哪个是正确的,使用 comma&&||,如下所示... p>

if(!empty($_POST['start']) , (!empty($_POST['middle']) , (!empty($_POST['end']))

if(!empty($_POST['start']) && (!empty($_POST['middle']) && (!empty($_POST['end']))

if(!empty($_POST['start']) || (!empty($_POST['middle']) || (!empty($_POST['end']))

谁能告诉我这种阵型的正确代码?

【问题讨论】:

  • 这些价值观可以结合在一起吗?还是总是一个/没有?
  • && 将检查每个条件,如果所有条件都为真,它将返回真... ||将检查第一个条件是否为真,否则将返回真,否则检查第二个条件如果全部为假(甚至没有一个为真),它将返回假......如果你,-那么右边的最后一个条件将被评估,如果为真,则返回真,否则为假。
  • 您是否尝试过不同的方法来查看运行它们时会发生什么?
  • 好吧,我在某处看到了这些 comma&&|| 函数,但我不知道如何使用当我以上面给出的方式使用它们时,它们在函数中给出了语法错误,使用它们的正确方法是什么,有人知道吗?

标签: php post if-statement


【解决方案1】:

这里有一些基本的.. 我把它作为评论(因为我不确定这是否是你要求的东西)但我想一个答案会是适当的,有一些细节。

  • AND 运算符

&& 将检查每个条件,如果所有条件都为真,它将返回真...

这样处理

if(FALSE && TRUE)

它总是返回 False 并且 if 不会执行,因为其中一个条件为 false

  • OR 运算符

||将检查第一个条件是否为真,否则将检查第二个条件如果全部为假(甚至没有一个为真),它将返回假。

再次按照前面的示例进行

if(TRUE || False || False)

现在编译器检查第一个条件是否为真,它将忽略接下来的两个条件并返回真。

if(FALSE || FALSE || FALSE) - 这将返回 false,因为所有都是 false

  • 逗号运算符

如果你是 , 操作员,那么右边的最后一个条件将被评估,如果为真则返回真否则为假

例子

if(True,True,True,False)  -  it will return false

if(FALSE, TRUE, FALSE, TRUE) - it will return true

所以根据你的逻辑选择运算符。

使用这个:

if((!empty($_POST['start'])) && (!empty($_POST['start'])) && (!empty($_POST['start'])));

【讨论】:

  • 感谢您的解释,但我仍然感到困惑。我想检查三个值 'start', 'middle', 'end' 如果所有这些函数都存在然后传递值否则离开它是空的。哪个选项适合我的情况?
  • 使用 AND (&&) 因为它将检查每个条件。
  • 谢谢。我认为这是我一直在寻找的功能。 if(empty($_POST['start']) && empty($_POST['middle']) && empty($_POST['end'])) 我将 !empty&& 一起使用,但是当我将 !empty 替换为 empty时出现语法错误>,它停止给出语法错误,所以我希望它会工作。
  • @user1444345 使用这个 if((!empty($_POST['start'])) && (!empty($_POST['start'])) && (!empty($_POST['开始'])));
  • 谢谢,它也在工作。我认为问题不是由于 !empty ...而是括号 () 问题,通过添加括号数量可以消除语法错误。
【解决方案2】:

您正在寻找类似的东西:

// Establish valid post key values
$valid_post_variables = array_flip( ['start', 'middle', 'end'] );

// Fetch post data
$post = $_POST;

// $result will contain the values of post where the keys matched valid
$result = array_intersect_key( $post, $valid_post_variables );

// if the resulting array contains our 3 options, its go time
if ( count( $result ) == 3 ) {
     //start middle and end where all passed via POST
}

【讨论】:

  • 我不这么认为,它看起来是另一回事。我已经有处理功能了,我只想使用一个'if'语句同时检查多个值。
  • 结果将是一个包含有效帖子选项的数组,
【解决方案3】:
function insertPost($before, $offset, $after)
{
    if(!empty($_POST[$offset])) {
         return $before . $_POST[$offset] . $after;
    }
    return '';
}

$description = insertPost('a sentence', 'start', ' with something in the START.');

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 2015-07-29
    • 2012-06-12
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2021-12-01
    相关资源
    最近更新 更多