0

それを素晴らしくシンプルにしましょう:

おそらく他のみんなと同じように、私はサーバー上でトップメニューやサイドメニューなどのさまざまなものにシンプルなインクルードを使用しています...

これが私のコード例です

<?php $number = 1; include("/var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php");?>

$ number = 1は、通常どおりページレベルに応じてタブを正しく選択することを定義します。

私が含めているコードは次のとおりです。

18 <?php $page[$number] = 'selected';?>
19 <!--=================== top navigation ==================-->
20 <nav>
21 <div id="menu">
22 <a href="/Page 1/" class="tab <?php echo $page[1] ?>" title="Page 1">Page 1</a>
23 <a href="/Page 2/" class="tab <?php echo $page[2] ?>" title="Page 2">Page 2</a>
24 <a href="/Page 3/" class="tab <?php echo $page[3] ?>" title="Page 3">Page 3</a>
25 <a href="/Page 4/" class="tab <?php echo $page[4] ?>" title="Page 4">Page 4</a>
26 <a href="/Page 5/" class="tab <?php echo $page[5] ?>" title="Page 5">Page 5</a>
27 <a href="/Page 6/" class="tab <?php echo $page[6] ?>" title="Page 6">Page 6</a>
28 <a href="/Page 3/" class="tab <?php echo $page[7] ?>" title="Page 7">Page 7</a>
29 </div><!-- end .menu -->
30 </nav><!-- end .navigation -->

明らかに、.selectedのcssは背景の色を変更して、その特定のページにいることを示します。そのため、説明する必要はありません。

問題が発生しました。ダウンロードするのに非常に大きなエラーログを確認したところ、次のエラーが見つかりました。

[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  2 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 23
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  3 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 24
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  4 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 25
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  5 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 26
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  6 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 27
[Sat Nov 24 17:50:50 2012] [error] [client 204.11.33.59] PHP Notice:  Undefined offset:  7 in /var/www/vhosts/MyWebSite.com/httpdocs/trial/includes/header.php on line 28

その理由がわかりません。$ numberがすでに事前定義されている場合のIMOは、なぜエラーになるのでしょうか。

私がそれを正しい方法で行うのを手伝ってください。

4

3 に答える 3

1

配列の要素を1つだけ設定しますが、さらにチェックします。これを行うことによって:

$a = 3;
$page[$a] = 'selected';

インデックス3のエントリは1つだけ存在します(他の場所に設定した場合を除きますが、そうではないと思います)。したがって、このコード:

<?php echo $page[1]; ?>

存在しない配列要素を参照しているため、警告が表示されます。の唯一の目的が$pageコードからのこれである場合は、それを完全に取り除きます。削除する

<?php $page[$number] = 'selected';?>

交換してください

<?php echo $page[7] ?>

他の理由でこの配列が必要な場合は、コードを置き換えてください

<?php echo $page[7] ?>

<?php echo isset($page[7]) ? 'selected' : '' ?>
于 2012-11-25T12:12:16.430 に答える
1

のインデックス$pageは定義されていません。次のようにコードを変更できます。

echo isset($page[1]) ? $page[1] : ""
//and so on
于 2012-11-25T12:12:26.087 に答える
0

div#menu内で次のクリーンなコードを使用します。

<?php 
$count = 7;
for($link = 1; $link <= $count; $link++){
    $extraClass = ($link == $number) ? "selected" : "" ;
    echo "<a href='/Page {$link}/' class='tab {$extraClass}' 
               title='Page {$link}'>Page {$link}</a>";
}
?>
于 2012-11-25T13:36:06.260 に答える