PHP包含运行两次时出错

时间:2017-02-02 20:13:45

标签: php include

我的网站上有一个include,它提供了一个链接来缩小每个起始字母的数据库请求,当它在网站上运行一次运行正常时。但是,我想将它包含在页面的顶部和底部,这似乎会导致问题,因为它会显示每个链接两次。

以下是include

中的代码
<?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);

我已经尝试检查是否存在$ alphas并且只运行$ alphas = range(&#39; A&#39;,&#39; Z&#39;)如果它没有但是没有#alpha;帮助。

任何想法都赞赏。

2 个答案:

答案 0 :(得分:2)

如果$elements数组已经存在,只需在代码的第一行进行测试。然后第二次代码运行时,它只会爆炸在脚本顶部创建的$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);

答案 1 :(得分: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);
}