如何检查多个变量并初始化非空变量?

时间:2017-11-18 08:17:15

标签: php html variables conditional isset

我有一个表单,其中包含一个具有相似名称的值的多个输入。像这样的东西:

isset($_GET['name1'])
isset($_GET['name2'])
isset($_GET['name3'])

总是,要么其中只有一个是真的,要么都不是。这是我的代码:

$name = '';
if( isset($_GET['name1']) ){
    $name = $_GET['name1'];
} else if ( isset($_GET['name2']) ) {
    $name = $_GET['name2'];
} else if ( isset($_GET['name3']) ) {
    $name = $_GET['name3'];
}

echo $name;

我的代码也适用。但我想如果没有这些条件我就可以做到。任何想法我怎么能把这个逻辑写得更干净?

4 个答案:

答案 0 :(得分:1)

以下是一个如何操作的示例,并不一定只将您绑定到名称name + 1 through 3。优先顺序从左(最优选)到右(最不可取),其中优选是指我们选择它们的顺序。

$names=['name1','name2','name3'];

$name = '';
foreach ($names as $value) {
  if (isset($_GET[$value])) {
    $name = $_GET[$value];
    break;
  }
}
echo $name;

答案 1 :(得分:1)

您可以使用循环:

for ($i = 1; $i <= 3; $i++) {
    if (isset($_GET["name$i"])) {
        $name = $_GET["name$i"];
        break;
    }
}

使用PHP 7合并运算符,您可以编写:

$name = $_GET["name1"] ?? $_GET["name2"] ?? $_GET["name3"] ?? "";

答案 2 :(得分:1)

循环遍历GET数组并使用empty

进行测试
$name=false;
foreach( $_GET as $field => $value ){
    if( !empty( $value ) ) {
        $name=$value;
        break;
    }
}

答案 3 :(得分:1)

可能会使用三元运算符,如下所示。

$name = $_GET['name1'] ?: $_GET['name2'] ?: $_GET['name3'] ?: '';

如果name1为空或未设置

,则应跳过name1并转到name2