2013-02-24 114 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