2013-02-24 108 views
1

i。具有每次我回聲這在我的index.php出來的錯誤PHP開關代碼錯誤

下面

是我的切換碼,因爲我使用PHP動態站點因此我使用開關來改變每個數據時間不同的PHP是呼叫。

<?php 
function title_switch() 
{ 
    $var = (isset($_GET['page']) && !empty($_GET['page'])) ? $_GET['page'] : 'home'; 
    switch ($var) { 
     case 'home': 
      $a['title'] = " &#187; Home"; 
      $a['meta_d'] = "This page is about my site!"; 
      $a['meta_k'] = "something, somethingelse"; 
      $a['slider1'] = "<script type=\"text/javascript\" src=\"./js/jquery.easing.1.3.js\"></script>\n"; 
      $a['slider2'] = "<script type=\"text/javascript\" src=\"./js/tms-0.3.js\"></script>\n"; 
      $a['slider3'] = "<script type=\"text/javascript\" src=\"./js/tms_presets.js\"></script>\n"; 
      $a['main'] = "<script type=\"text/javascript\" src=\"./js/script.js\"></script>\n"; 
      $a['pageid'] = "page1"; 
      $a['slider'] = "slide"; 
      break; 
     case 'company': 
      $a['title'] = " &#187; Company"; 
      $a['meta_d'] = "This page is about my site!"; 
      $a['meta_k'] = "something, somethingelse"; 
      $a['all'] = "<script type=\"text/javascript\" src=\"./js/all.js\"></script>\n"; 
      $a['pageid'] = "page2"; 
      $a['slider'] = "banner"; 
      break; 
     default: 
      $a['title'] = " &#187; HTTP 404 - Page Not Found"; 
      $a['meta_d'] = ""; 
      $a['meta_k'] = ""; 
      break; 
    } 
    return $a; 
} 
$details = title_switch(); 
?> 

這是我上線的index.php 21

<?php echo $details['all']; ?> 

如果調用home.php它會顯示以下錯誤

注意:未定義指數:所有在C:\ WAMP \ www \ site \ index.php在線21 調用堆棧

時間記憶功能位置

1 0.0035 258968 {}主().. \的index.php:0

如果我叫company.php它不會顯示任何錯誤...

可我知道沒有我出錯?有點混淆在這裏...

例如:如果我打電話給www.example.com/company它沒有顯示錯誤,但如果我打電話給www.example.com它顯示錯誤。

我想這個代碼

<?php echo $details['all']; ?> 

顯示只有www.example.com/company,它不會顯示如果www.example.com通話。

內部代碼:

<?php echo $details['all']; ?> 

case 'company': 
     $a['title'] = " &#187; Company"; 
     $a['all'] = "<script type=\"text/javascript\" src=\"./js/all.js\"></script>\n"; 

希望這可以給大家一個更好更清晰的誰可以幫我解決這個錯誤。 謝謝。

+0

第115行是什麼? – Aris 2013-02-24 08:55:58

+0

'<?php echo $ details ['all'];順便說一句,我想這個代碼'<?php echo $ details ['all']; ?''觸發只有company.php調用時,如果home.php是調用,那麼這段代碼不會觸發... 我使用開關,但它觸發無論在home.php或company.php,所以這就是爲什麼當我呼叫home.php它顯示錯誤... 我真的失去了現在我去哪裏錯了... – Jeff 2013-02-24 09:01:50

+0

然後告訴我們什麼是家。PHP和什麼是company.php。你的意思是'觸發代碼'是什麼意思?該變量或者被定義或者不被定義。 – Aris 2013-02-24 09:07:25

回答

5

$a['all']僅當switch($var)等於'company'時才被設置。你需要在每個案例上設置它。

在交換機內部,您可以將$a['all']設置爲空值,以便PHP至少可以找到索引。一個簡短的例子:

switch ($var) { 
    case 'home': 
     $a['all'] = ''; 
    case 'company': 
     $a['all'] = '<script type=\"text/javascript\" src=\"./js/all.js\"></script>\n'; 
    default: 
     $a['all'] = ''; 
} 
+0

是什麼意思?我仍然在這裏高興地模糊: – Jeff 2013-02-24 05:31:30

+0

當你嘗試訪問一個不存在的密鑰時,PHP會輸出一個通知,他說的是你在其中一個案例中只設置了'$ a ['all']',所以如果另一個案例被選中,'$ a ['all']'undefined。 – Cluster 2013-02-24 06:35:39

+0

okie,我想我可能會得到他的意思,但我不想'$ a ['all']'觸發如果home.php在這個開關旁邊,我想不出任何其他我可以編碼的東西,我仍然是新手,在PHP中,任何指導都非常感謝 – Jeff 2013-02-24 08:08:46

0

目前尚不清楚你在做什麼。 但是在函數中定義$ a ['all'],即使它是空的。所以,它會被設置,而不是給出警告。 添加行$ a ['all'] ='';在默認情況下:

+0

這也沒有幫助... – Jeff 2013-02-24 09:28:35

+0

首先確保案件「公司」:由回聲「內部」進入。如果是這樣,那麼問題可能出現在JavaScript中,接下來你需要調用它。 – Aris 2013-02-24 09:45:21

+0

案件'公司'在'case'公司': $ a ['title'] =「» Company」; $ a ['meta_d'] =「這個網頁是關於我的網站!」; $ a ['meta_k'] =「某事,某事」; $ a ['all'] =「 \ n」;; $ a ['pageid'] =「page2」; $ a ['slider'] =「橫幅」; break;' 我想要案例公司觸發腳本,如果家裏的腳本應該出現 – Jeff 2013-02-24 09:52:14