【发布时间】:2020-05-08 23:10:32
【问题描述】:
任何方法都可以包含乘以包含一些相同代码的 PHP 文件而不会出现错误:
Fatal error: Cannot redeclare Feed() (previously declared in ...
我有一个 php 文件 XML 解析来从网站获取信息。然后我有第二个 PHP 文件,其代码与第 1 个相同,+ 额外删除该输出以使其更易于理解。因此,您可以看到修改后的文本大而清晰,并在下面获得更详细的信息。
问题是当我使用相同的代码包含 PHP 文件时出现错误。
<h1 class="status">Status:<span class="open"><?php include 'open-closed.php'?></span></h1>
<p class="info"><?php include 'status.php' ?></p>
open-closed.php 具有与 status.php 完全相同的代码,但也有一些额外的代码。 状态.php
$url = ('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604');
function Feed($url) {
$feed = simplexml_load_file($url) or die('Can not connect to server');
$result = array();
foreach ($feed->channel->item as $content) {
array_push($result, $content);
}
return $result;
}
$title = 'Ev 134';
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604') as $f ) {
if (strpos($f->title, $title) !== false)
echo $f->description;
}
open-closed.php
$url = ('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604');
function Feed($url) {
$feed = simplexml_load_file($url) or die('Can not connect to server');
$result = array();
foreach ($feed->channel->item as $content) {
array_push($result, $content);
}
return $result;
}
$title = 'Ev 134';
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604') as $f ) {
if (strpos($f->title, $title) !== false)
$green_color = 'green';
$red_color = 'red';
$closed_text = 'closed';
$exception_text = 'could be closed';
if (strpos($f->title, $title) !== false){
if(strpos($f->description, $closed_text) !== false){
echo (strpos($f->description, $exception_text) === false) ?
'<span style="color:'.$red_color.'">STENGT</span>' :
'<span>ÅPEN</span>';
}else{
echo '<span>ÅPEN</span>';
}
}
}
【问题讨论】:
-
这两个文件都声明了
Feed函数?而且他们的声明是一样的吗? -
我已更新问题以显示两个 PHP 文件的内容。
-
为什么要在顶部声明
$url变量,然后从不使用它,而是将相同的字符串常量传递给函数?如果 URL 从不改变,它可能不需要作为函数的参数;如果确实如此,则在您调用函数时传递$url变量或消除该未使用的变量。 -
如果您包含具有相同代码的文件...这意味着 feed 函数被编写了两次...所以您收到错误...函数名称始终是唯一的...您无法重新声明该函数...如果您想同时使用这两个函数...将任何函数重命名为其他名称..