PHP:通过德国数组的回声日期会导致错误

时间:2017-10-08 11:29:14

标签: php arrays date echo

所以我有这个数组,包含每个月号的德语等效词(不带前导零):

$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),但这也不起作用。

3 个答案:

答案 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];