-1

我有以下 $_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.";
}

我想检查一个函数中的值,换句话说,我想同时检查多个值。我见过很少的方法,但不确定哪个是正确的,使用逗号&&|| ,像下面的东西......

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']))

谁能告诉我这种编队的正确代码?

4

3 回答 3

4

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

  • AND 运算符

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

像这样

if(FALSE && TRUE)

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

  • OR 运算符

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

再次按照前面的例子

if(TRUE || False || False)

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

if(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'])));
于 2012-07-04T18:09:16.100 回答
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
}
于 2012-07-04T17:57:14.200 回答
0
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.');
于 2012-07-04T18:20:14.687 回答