如何检查多个变量并初始化非空变量?
How can I check multiple variables and initialize the non-empty one?
我有一个表单,其中一个值具有多个输入,且名称相似。像这样:
isset($_GET['name1'])
isset($_GET['name2'])
isset($_GET['name3'])
总是,要么只有其中一个为真,要么 none 个为真。这是我的代码:
$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;
我的代码也能正常工作。但我想我可以在没有这些条件的情况下做到这一点。知道我怎样才能把逻辑写得更干净吗?
这是一个示例,它不一定将您绑定到名称 name
+ 1 through 3
。偏好顺序从左(最优选)到右(最不优选),其中优选是指我们选择它们的顺序。
$names=['name1','name2','name3'];
$name = '';
foreach ($names as $value) {
if (isset($_GET[$value])) {
$name = $_GET[$value];
break;
}
}
echo $name;
您可以使用循环:
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"] ?? "";
遍历 GET
数组并使用 empty
进行测试
$name=false;
foreach( $_GET as $field => $value ){
if( !empty( $value ) ) {
$name=$value;
break;
}
}
可以像下面这样使用三元运算符。
$name = $_GET['name1'] ?: $_GET['name2'] ?: $_GET['name3'] ?: '';
如果 name1 为空或未设置,应跳过 name1 并转到 name2
我有一个表单,其中一个值具有多个输入,且名称相似。像这样:
isset($_GET['name1'])
isset($_GET['name2'])
isset($_GET['name3'])
总是,要么只有其中一个为真,要么 none 个为真。这是我的代码:
$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;
我的代码也能正常工作。但我想我可以在没有这些条件的情况下做到这一点。知道我怎样才能把逻辑写得更干净吗?
这是一个示例,它不一定将您绑定到名称 name
+ 1 through 3
。偏好顺序从左(最优选)到右(最不优选),其中优选是指我们选择它们的顺序。
$names=['name1','name2','name3'];
$name = '';
foreach ($names as $value) {
if (isset($_GET[$value])) {
$name = $_GET[$value];
break;
}
}
echo $name;
您可以使用循环:
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"] ?? "";
遍历 GET
数组并使用 empty
$name=false;
foreach( $_GET as $field => $value ){
if( !empty( $value ) ) {
$name=$value;
break;
}
}
可以像下面这样使用三元运算符。
$name = $_GET['name1'] ?: $_GET['name2'] ?: $_GET['name3'] ?: '';
如果 name1 为空或未设置,应跳过 name1 并转到 name2