4

我正在尝试动态输出页面标题。我正在使用induces,这个脚本与header.php一起使用,目标是使用case/switch语句动态输出标题。这是我的代码:

<?php  $title ;
    switch($_SERVER['PHP_SELF'])  {
        case '/index.php': 
            $title = 'Home'; 
            break;
        case '/about.php': 
            $title = 'About'; 
            break;
        case '/services.php': 
            $title = 'Services'; 
            break;
        case '/portfolio.php': 
            $title = 'Portfolio'; 
            break;
        case '/staff.php': 
            $title = 'Staff'; 
            break;
        case '/contact.php': 
            $title = 'Contact us'; 
            break;
} ?>  <title><?php echo $title ?></title>

我收到一条错误消息,告诉我我的变量 $title 未定义?

我做错了什么?

4

4 回答 4

4

在你的第一行,你有

<?php  $title ;

$title ;不应该在那里。

而且,正如 Kailash Ahirwar 已经提到的那样,为您的 提供默认值总是一个好主意$title

switch($_SERVER['PHP_SELF']) {
    [...]
    default:
        $title = "Default title goes here";
}
于 2013-09-18T20:35:16.063 回答
1

尝试定义$title之前switch

$title = "";
于 2013-09-18T20:37:19.080 回答
1

在 $_SERVER 全局数组中,$_SERVER[PHP_SELF] 包含文件的完整路径,例如

/project_name/index.php 或 /project_name/about.php 或 /project_name/services.php

这里 project_name 是您的项目的名称。

代替

 case '/index.php'
 case '/about.php'
 case '/services.php'
 ....

 case '/project_name/index.php'
 case '/project_name/about.php'
 case '/project_name/services.php'
 .....

& 还在 php 文件的开头初始化 $title。

 <?php $title = ""; 

 switch ($_SERVER['PHP_SELF']) {
   case '/project_name/index.php':
     $title = 'Home'; 
     break;
  case '/project_name/about.php':
     $title = 'About';
     break;
  case '/project_name/services.php':
     $title = 'Services';
     break;
  case '/project_name/portfolio.php':
    $title = 'Portfolio';
    break;
 case '/project_name/staff.php':
    $title = 'Staff';
    break;
 case '/project_name/contact.php':
    $title = 'Contact us';
    break; 
 }
?>

用于测试目的

print_r($_SERVER);

并检查 $_SERVER(PHP_SELF) 值。

于 2013-09-18T20:44:55.593 回答
0

尽管您缺少一个“默认”块来捕获任何“case”语句未捕获的任何内容,但代码看起来基本上很好。

于 2013-09-18T20:41:20.020 回答