我收到此错误消息:
Notice: Undefined variable: string in common_yyyymmdd_is_valid() (line 933 of XXXXXX/common/common.module).
已定义。这是代码:
if (!array_key_exists('exception_date', $exceptions)) {
// Blah
}
elseif (!common_yyyymmdd_is_valid($exceptions['exception_date'])) {
// Blah
}
elseif (!common_date_is_future($exceptions['exception_date'])) {
// Blah
}
第一个elseif
语句导致此问题。如果我发表评论,尽管使用相同的变量,第二个也不会给我同样的错误。
function common_yyyymmdd_is_valid($string) {
watchdog('TEST','string: ' . $string);
933 return (bool) preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $string);
}
function common_date_is_future($string) {
$date = new DateTime($string);
$now = new DateTime();
if($date < $now) {
return FALSE;
}
return TRUE;
}
我不明白为什么这是未定义的。看门狗向我显示了我发送的字符串。
答案 0 :(得分:1)
正如Mario在问题评论中指出的那样,变量名中有一个Unicode空格(可能是从我复制并粘贴到另一个SE问题时)。
原件:
function common_yyyymmdd_is_valid($string) {
watchdog('TEST','string: ' . $string);
return (bool) preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $string);
}
我手动重写了这一行,并且它有效。这是更新的:
function common_yyyymmdd_is_valid($string) {
return (bool) preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $string);
}
我在这里或在我使用的textmate应用程序中看不出区别。我不确定马里奥是如何看到它的,但我从他知道的经验中打赌来检查。
答案 1 :(得分:0)
在通话功能之前,请检查异常日期是否存储在$exceptions
数组中,如:
if(isset($exceptions['exception_date']) && !empty($exceptions['exception_date'])){
if (!common_yyyymmdd_is_valid($exceptions['exception_date'])) {
// Blah
}
elseif (!common_date_is_future($exceptions['exception_date'])) {
// Blah
}
}