4

ページタイトルを動的に出力しようとしています。私はインデュースを使用しており、このスクリプトは 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 に答える