我一直试图以isset()
嵌套的形式使用,如下所示:
isset($_POST['selectedTemplate'])?$_POST['selectedTemplate']:isset($_GET['selectedTemplate'])?$_GET['selectedTemplate']:0
Run Code Online (Sandbox Code Playgroud)
但似乎我错过了一些东西.任何人都可以帮我怎么做?
Jos*_*ber 48
用括号括起来:
$selectedTemplate = isset($_POST['selectedTemplate'])
? $_POST['selectedTemplate']
: (
isset($_GET['selectedTemplate'])
? $_GET['selectedTemplate']
: 0
);
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,使用适当的if
/ else
声明(为了可维护性):
$selectTemplate = 0;
if (isset($_POST['selectedTemplate'])) {
$selectTemplate = $_POST['selectedTemplate'];
} elseif (isset($_GET['selectedTemplate'])) {
$selectTemplate = $_GET['selectedTemplate'];
}
Run Code Online (Sandbox Code Playgroud)
但是,正如其他人所指出的那样:您可以更轻松地使用$_REQUEST
:
$selectedTemplate = isset($_REQUEST['selectedTemplate'])
? $_REQUEST['selectedTemplate']
: 0;
Run Code Online (Sandbox Code Playgroud)
截至PHP 7
我们可以使用Null 合并运算符
$selectedTemplate = $_POST['selectedTemplate'] ?? $_GET['selectedTemplate'] ?? 0;
Run Code Online (Sandbox Code Playgroud)
在这里稍微调查一下,我想,我找到了真正的答案:)
示例代码:
<?php
$test = array();
$test['a'] = "value";
var_dump(
isset($test['a'])
? $test['a']
: isset($test['b'])
? $test['b']
: "default"
);
Run Code Online (Sandbox Code Playgroud)
我想,您正在等待获得类似的行为:
var_dump(
isset($test['a'])
? $test['a']
: (isset($test['b']) // <-- here
? $test['b']
: "default") // <-- and here
);
Run Code Online (Sandbox Code Playgroud)
但!实际行为如下所示:
var_dump(
(isset($test['a']) // <-- here
? $test['a']
: isset($test['b'])) // <-- and here
? $test['b']
: "default"
);
Run Code Online (Sandbox Code Playgroud)
一般错误是,您错过了通知:Undefined index。
在线壳。