所以我有这个数组,包含每个月号的德语等效词(不带前导零):
$months= array(1=>"Januar",
2=>"Februar",
3=>"März",
4=>"April",
5=>"Mai",
6=>"Juni",
7=>"Juli",
8=>"August",
9=>"September",
10=>"Oktober",
11=>"November",
12=>"Dezember");
现在我在3天前提取这个月:
$german = date("n", strtotime("-3 days"));
以$ month为单位回收$ german的值会产生错误:
echo $month($german);
错误讯息:
Fatal error: Function name must be a string in X on line X
单独回应$german
不会产生错误
回应$months(date("n", strtotime("some $row value from database")))
不会产生错误
问题是什么?
我已经尝试过这样做:echo $months((int)$german)
,但这也不起作用。
答案 0 :(得分:2)
在关联数组中,您需要用引号括起键。
示例:强>
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
...
FormsModule,
...
],
declarations: [
...
ProfileListComponent,
...
]
})
进一步思考:
由于你的密钥是数字,你可以放弃一个关联数组,只需使用一个索引数组:
从这个索引数组:
$months = array("1" => "Januar",
"2" => "Februar",
"3" => "März",
"4" => "April",
"5" => "Mai",
"6" => "Juni",
"7" => "Juli",
"8" => "August",
"9" => "September",
"10" => "Oktober",
"11" => "November",
"12" => "Dezember");
提供$months = array("Neujahr",
"Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember");
。array_search("Oktober", $months)
提供10
答案 1 :(得分:1)
$months
是一个数组,而不是一个函数。引用数组中的元素时,必须使用[]
而不是()
(用于调用函数或方法)。
echo $month[$german];
应该有效,而$month($german)
尝试调用存储在变量$month
中的函数。
答案 2 :(得分:0)
echo $ month($ german);
这段代码存在两个问题。
次要的是变量$month
不存在,包含德语月份名称的数组名为$months
。错误消息中也有关于此问题的提示。它说"函数名必须是字符串" 。它不是一个字符串,它是未定义的。
如果您在运行代码时报告解释程序报告的所有错误,警告和通知,则可以轻松捕获此问题。检查您的php.ini
并确保error_reporting
行显示为:
error_reporting = E_ALL
有了这个设置,行echo $month($german);
会将通知报告为"注意:未定义的变量:Y行上文件X中的月份" &之前的 #34;函数名必须是字符串" 致命错误。
第二个错误是$months()
作为函数的调用,当它不是函数而是数组时。正确的用法是:
echo $months[$german];