isset PHP isset($ _ GET ['something'])?$ _GET ['something']:''

use*_*186 31 php isset

我希望扩展我的PHP知识,我遇到了一些我不确定它是什么或如何搜索它的东西.我正在看php.net的isset代码,我明白了isset($_GET['something']) ? $_GET['something'] : ''

我理解正常的isset操作,比如if(isset($_GET['something']){ If something is exists, then it is set and we will do something }但是我不明白?,重复再次获取,或者是''.有人可以帮我解决这个问题,或者至少指出我正确的方向吗?

uın*_*ɐɥs 71

它通常被称为"速记"或三元运算符.

$test = isset($_GET['something']) ? $_GET['something'] : '';
Run Code Online (Sandbox Code Playgroud)

手段

if(isset($_GET['something'])) {
    $test = $_GET['something'];
} else {
    $test = '';
}
Run Code Online (Sandbox Code Playgroud)

要打破它:

$test = ... // assign variable
isset(...) // test
? ... // if test is true, do ... (equivalent to if)
: ... // otherwise... (equivalent to else)
Run Code Online (Sandbox Code Playgroud)

要么...

// test --v
if(isset(...)) { // if test is true, do ... (equivalent to ?)
    $test = // assign variable
} else { // otherwise... (equivalent to :)
Run Code Online (Sandbox Code Playgroud)


sci*_*tai 6

这被称为三元运算符,它主要用于代替if-else语句.

在您给出的示例中,可以使用它从给定的isset返回true的数组中检索值

isset($_GET['something']) ? $_GET['something'] : ''
Run Code Online (Sandbox Code Playgroud)

相当于

if (isset($_GET['something'])) {
  $_GET['something'];
} else {
  '';
}
Run Code Online (Sandbox Code Playgroud)

当然除非你将它分配给某些东西,否则它没什么用处,甚至可能为用户提交的值分配一个默认值.

$username = isset($_GET['username']) ? $_GET['username'] : 'anonymous'
Run Code Online (Sandbox Code Playgroud)


Geo*_*ili 5

从PHP 7开始,您可以将其编写得更短:

$age = $_GET['age']) ?? 27;
Run Code Online (Sandbox Code Playgroud)

这意味着如果在网址中提供了年龄参数,则将其设置为$agevar或默认为27

查看php 7的所有新功能