我有一个帮助函数library(dplyr)
dt[dt$period >= "Mar 2014"] <- dt %>%
filter(period >= "Mar 2014") %>%
group_by(grp) %>%
mutate(x = x[period == "Mar 2014"],
y = y[period == "Mar 2014"])
dt
# grp period x y
#1: 1 Jan 2014 1 11
#2: 1 Feb 2014 2 12
#3: 1 Mar 2014 3 13
#4: 1 Apr 2014 3 13
#5: 1 May 2014 3 13
#6: 2 Jan 2014 6 16
#7: 2 Feb 2014 7 17
#8: 2 Mar 2014 8 18
#9: 2 Apr 2014 8 18
#10: 2 May 2014 8 18
#11: 3 Jan 2014 11 21
#12: 3 Feb 2014 12 22
#13: 3 Mar 2014 13 23
#14: 3 Apr 2014 13 23
#15: 3 May 2014 13 23
,内容为:
helper.php
包含在两个文件(<?php
session_start();
function get_result($dbh, $sql) {
//return mssql_query($sql);
return $dbh->query($sql);
}
?>
和information.php
)中,使用:
commercial.php
不幸的是,这会产生稍微混乱的错误消息:
include_once 'helper.php'
我明白我不能重新声明函数,因此我使用PHP Fatal error: Cannot redeclare get_result() (previously declared in helper.php:4) in helper.php on line 4
构造的原因,但无论如何它试图重新声明函数。为什么呢?
如果有帮助;我使用的是Mustache PHP,并且所有三个文件都位于include_once
文件夹中。
答案 0 :(得分:2)
include_once
确保文件只包含一次。它不检查文件的内容或其中的功能。因此,当添加两个具有相同功能名称的文件时,错误就很自然了!
来自手册:
在可能存在相同文件的情况下,可能会使用
include_once
在特定执行期间不止一次地包含和评估 一个脚本,所以在这种情况下,它可以帮助避免诸如函数之类的问题 重新定义,变量值重新分配等
斜体表示该函数在同一个文件中,而不是在不同的文件中。
答案 1 :(得分:1)
解决此错误的一种方法是将辅助函数包装在一个检查中。
您可以尝试以下方式:
if (! function_exists('get_result')) {
function get_result()
{
//your code
}
}
希望这有帮助!