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

PHP - If variable is not set, get post variable

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

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

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

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

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

你这应该行得通:

$defaultbg = '#FFFFFF';

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

Mauybe $randombg 为 null 或空(这并不完全意味着未设置)。

试试这个:

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

或缩短语法:

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

[特征] 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 Operator and PHP: 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)