2017-02-02 10 views
1

私のサイトには、起動時に1文字ずつデータベース要求を絞り込むためのリンクが用意されています。しかし、私はそれをページの上部と下部の両方に含めたいと思います。これは各リンクを2回表示するので問題を引き起こすようです。以下はPHPインクルードを2回実行するとエラーが発生する

はそうではないが、のdidnことをしなければ、私は範囲(「A」、「Z」)= $のア​​ルファが存在するかどうかをチェックするだけで$アルファを実行しようとしているが含ま

<?php 
$alphas = range('A', 'Z'); 
$url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); 

foreach ($alphas as $letter) { 
    $elements[] = "<a href=$url?firstletter=$letter>$letter</a>"; 
} 
echo implode(', ', $elements); 

のコードです助けてください。

感謝しています。

+0

初期化する '' foreach'すなわち '$の要素の前に$ elements' =配列();'や '$要素= [];'は – RiggsFolly

+0

@RiggsFollyはまだ二回、不要なループ – nogad

+0

あなたはループの前にinitを実行しませんでしたこの権利のように? '$ elements = array(); foreach($ alphas $ letter){... ' – RiggsFolly

答えて

1

これは私が問題を解決するために使用したコードです。これは最高のものではなく、私が使用したものです。

<?php 
if (!isset($elements)) { 
$alphas = range('A', 'Z'); 
$url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); 

foreach ($alphas as $letter) { 
    $elements[] = "<a href=$url?firstletter=$letter>$letter</a>"; 
} 
echo implode(', ', $elements);} 
else { 
    echo implode(', ', $elements); 
} 
2

$elements配列がすでに存在する場合は、コードの最初の行でテストしてください。コードが2回目に実行されると、スクリプトの先頭に作成された$elementsの配列が展開されます。余分な変数は必要ありません!

<?php 
if (! isset($elements)) { 
    $alphas = range('A', 'Z'); 
    $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); 
    $elements = array(); 
    foreach ($alphas as $letter) { 
     $elements[] = "<a href=$url?firstletter=$letter>$letter</a>"; 
    } 
} 
echo implode(', ', $elements); 
関連する問題