2016-11-19 130 views
-1

我想通過變量傳遞給新名稱(如果已設置),或者如果未設置第一個變量則獲取POST變量。PHP - 如果未設置變量,則獲取帖子變量

這是我的代碼,但它不工作:

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

什麼是錯的,或者我怎麼能解決這個問題?

+0

請,你能用真正發生的事情來代替「不工作」嗎?看到你的一些消息或錯別字? – sensorario

+0

你檢查我的解決方案嗎? –

回答

1

您的代碼中存在拼寫錯誤。有一個在)$background = $_POST['bg']) 和分號

你這應該工作:

$defaultbg = '#FFFFFF'; 

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

''''''^ – sensorario

0

Mauybe $ randombg爲空或空(即不完全是指未設置)。

試試這個:

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

或者一個縮短的語法:

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

請不要做第二個。它只是一個巨大的來源,「爲什麼這個代碼不工作」 – Qrchack

+1

爲什麼不是這個sytax?如果你把它寫在一行中,讀起來會更好,而且要短得多。 –

+0

有時代碼不起作用,因爲開發人員不能讀取錯誤。 – sensorario

0

[專題] 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)