【问题标题】:PHP Array [$var] not workingPHP 数组 [$var] 不工作
【发布时间】:2013-04-21 11:03:53
【问题描述】:

我有一个简单的数组,我想用 $ 变量来调用它们。

示例:

$test = array(01=>"Januar",
              02=>"Februar",
              03=>"März",
              04=>"April",
              05=>"Mai",
              06=>"Juni",
              07=>"Juli",
              08=>"August",
              09=>"September",
              10=>"Oktober",
              11=>"November",
              12=>"Dezember");

$monat = strftime("%m",$timestamp);

所以在 $monat 中类似于“04”...然后我调用我的数组:

echo $test[$monat];

但是什么也没发生……我不明白为什么……当我打电话时

echo $monat; 

显示“04”、“03”...

为什么不给我数组的东西?

【问题讨论】:

  • 将您的密钥用引号括起来 '01' => ...(int)01 == 1
  • 当您说“什么都没有发生”时,您的意思是您既没有得到数组值,也没有得到undefined index 通知?您是否已将 PHP 配置为显示所有错误消息?

标签: php arrays variables


【解决方案1】:

您的问题是strftime("%m",$timestamp); 返回一个字符串(因此strftime 中的str),而数组中的键都是数字。

如果您将数组中的键更改为字符串,那么它应该可以工作:

$test = array("01"=>"Januar",
              "02"=>"Februar",
              "03"=>"März",
              "04"=>"April",
...

【讨论】:

  • 但是 strftime("%m",$timestamp);返回我 04 ... 所以在我的数组中是相等的?
  • 检查返回值的类型;它应该是一个字符串。否则不会显示前导零。如果您也在数组字符串中创建键,那么它们将匹配。你问的是这个吗?
  • @user2192028 - 如果您将系统配置为显示错误消息,PHP 会自动告诉您这些问题。您将不再需要猜测!
  • 很高兴听到@user2192028!如果答案解决了您的问题,那么如果您可以通过单击左侧的复选标记将其标记为已接受,那就太好了,这样人们就知道问题已得到解答。
  • @all 还可以指出完整性 - 将 $monat 转换为整数也是一个合理的选择...example
【解决方案2】:

你可以让你的数组更基础一些,像这样:

$test = array('January', 'February', 'March');

然后根据你走的路加或减 1。

ASGM 的想法是正确的,但我会走另一条路:

$test = array("January" => "04");

这可以更容易使用......所有这些都是情境和优先的

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 2018-04-27
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2012-01-17
    • 1970-01-01
    相关资源
    最近更新 更多