[英]switch using $_SERVER['HTTP_HOST'] always defaults to first
我有以下代碼:
<?php
echo $_SERVER['HTTP_HOST'];
// CONFIGURATION ITEMS
$captcha_private_key = '';
$captcha_public_key = '';
switch ($_SERVER['HTTP_HOST']) {
case 'earth-neighbours.com' || 'www.earth-neighbours.com':
$captcha_private_key = '6Lcb_t4SAAAAALkdH4njSny2HYbrmGKS_G84kM_d';
$captcha_public_key = '6Lcb_t4SAAAAAPEtqJEcWXuo0zmRD5PxYkXx84R4';
echo 'live';
break;
case 'earth-neighbours.projects.mi24.net':
$captcha_private_key = '6Lca_t4SAAAAAJb5L4sA7fEHxDFA0Jl8jFw-h3hE';
$captcha_public_key = '6Lca_t4SAAAAAFd-Q2k8esFa9U8nQ2rirEZHFtAH';
break;
case 'earth-neighbours.local':
$captcha_private_key = '6LcZ_t4SAAAAAGc1_S9ahxo-Vg-e7QgHg4yAWBVU';
$captcha_public_key = '6LcZ_t4SAAAAAPHQDb_f-g4mS6mpmc0heustHQ60&hl';
echo 'local';
break;
}
?>
它在本地服務器上運行(earth-neighbours.local),因此應輸出'local'。 相反,它輸出“實時”。 然而,頂部的回聲(echo $ _SERVER ['HTTP_HOST'];)返回url earth-neighbours.local,因此它應該是回顯的'local'。 這讓我很難過。 我以前工作過,現在我把它轉移到了頁面的頂部,它不起作用。 奇怪的! 任何人?
PHP不像其他編程語言那樣執行switch case或語句。
當您寫下以下內容時:
switch ($test) {
case 1 || 2:
$blah();
break;
}
這是實際發生的事情:
switch ($test) {
if (true == $test) {
}
}
發生這種情況的原因是因為案例內容實際上得到了評估,而在PHP中, 1 || 2 === true
1 || 2 === true
。 PHP然后在$ test上對布爾值進行類型轉換,而$ test除非為空,否則為真。
PHP“正確”語法是:
switch ($test) {
case 1:
case 2:
$blah();
break;
在PHP(實際上還有其他幾種語言)中,一旦解釋器進入switch
,它的唯一出現方式就是break
。 在案件結束時沒有破壞告訴它繼續。
采用:
case 'earth-neighbours.com':
case 'www.earth-neighbours.com':
代替:
case 'earth-neighbours.com' || 'www.earth-neighbours.com':
因為這是switch語句的錯誤語法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.