我有以下$ _POST函数来检查' start',' middle'并且'结束'是空的。
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']))
有谁能告诉我这种形成的正确代码?
答案 0 :(得分:4)
这里有一些基本的..我把它作为评论(因为我不确定这是否是你要求的东西)但我想答案是适当的一些细节。
把它当成这个
if(FALSE && TRUE)
它将始终返回False,如果不执行,因为其中一个条件为false
||将检查第一个条件是否为真它将返回true否则检查第二个条件如果所有都为假(甚至不是单个为真),它将返回false。
再次遵循上一个例子
if(TRUE || False || False)
现在编译器检查第一个条件是否为真,它将忽略接下来的两个条件并返回true。
if(FALSE || FALSE || FALSE)
- 这将返回false,因为所有都是假的
如果您,操作员,那么将评估右侧的最后一个条件,如果为真,那么它将返回true,否则为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'])));
答案 1 :(得分: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
}
答案 2 :(得分: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.');