PHP - 如果未设置变量,则获取post变量

时间:2016-11-19 09:19:38

标签: php variables if-statement post isset

我正在尝试将变量传递给新名称(如果已设置),或者如果未设置第一个变量则获取POST变量。

这是我的代码,但它不起作用:

if (isset($randombg)) {
    $background = $randombg;    
} else {  
   $background = $_POST['bg']) 
};

它有什么问题,或者我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您的代码中存在拼写错误。 )中有一个$background = $_POST['bg']) 和分号

你应该这样做:

$defaultbg = '#FFFFFF';

if (isset($randombg)) {
    $background = $randombg;    
} elseif( isset( $_POST['bg'] ) ) {  
   $background = $_POST['bg'];
   }else{
       $background = $defaultbg;
       }

答案 1 :(得分:1)

[功能] PHP 7.0.x +

如果您使用的是PHP 7.0.x +,则可以使用以下语法:

$background = $randombg ?? $_POST['bg'];

在这种情况下,$background将从第一个变量中获取值,该变量已设置且不为空。

你甚至可以这样做:

$background = $randombg ?? $_POST['bg'] ?? 'No background given'; 
// if $randombg and $_POST['bg'] will be not set or null $background will become 'No background given'

有关该功能的更多信息,请参阅PHP RFC: Null Coalesce OperatorPHP: New Features

关于您的代码

您的代码中包含语法。更多信息如下:

if (isset($randombg)) {
    $background = $randombg;    
} else {  
   $background = $_POST['bg']) // you have syntax here, delete )
}

您还可以使用简短的语法:

$background = (isset($randombg)) ? $randombg : $_POST['bg'];

它的工作原理如下:

$background = (condition) ? 'when true' : 'when false';

有关它的更多信息,请阅读here (Shorthand if/else)

答案 2 :(得分:0)

Mauybe $ randombg为null或为空(这并不意味着没有设置)。

试试这个:

if ($randombg) {
    $background = $randombg;    
} else {  
    $background = $_POST['bg'];
}

或缩短语法:

$background = null == $randombg
    ? $_POST['bg']
    : $randombg;