【问题标题】:PHP nested array yielding undefined index error - what am I doing wrong?PHP嵌套数组产生未定义的索引错误 - 我做错了什么?
【发布时间】:2014-04-29 23:06:06
【问题描述】:

我正在向控制器发送一个 POST 数组。数组如下所示:

Array
(
[event] => Array
    (
        [0] => Array
            (
                ['publishStart'] => 2013-12-10
                ['eventStart'] => 2014-05-05
                ['eventEnd'] => 2014-05-10
                ['timeStart'] => 
                ['timeEnd'] => 
                ['location_id'] => 1
                ['id'] => 65774
            )

其中有几个块,即 [event][1]。 [event][2] 等。我正在尝试在 $_POST['event'] 上运行 foreach 循环,并且可以确认在每次迭代中,$event 包含以下内容:

Array
(
    ['publishStart'] => 2013-12-10
    ['eventStart'] => 2014-05-05
    ['eventEnd'] => 2014-05-10
    ['timeStart'] => 
    ['timeEnd'] => 
    ['location_id'] => 1
    ['id'] => 65774
)

现在,问题来了。您可以在上面的两个数组中看到一个名为“id”的键具有相应的值。然而下面的代码返回一串“未定义的索引”错误:

foreach ($_POST['event'] as $event)
{   
    echo $event['id'];
    exit();
}

我到底做错了什么?

【问题讨论】:

  • print_r($_POST) 的输出是什么?
  • 只是为了调试,在 $event 上做一个 var_dump 而不是 echo $event['id']
  • 对不起,如果我说得不够清楚,但上面的两个数组都是您的两个请求的格式良好的版本,直接从 var_dump 输出。 $event 的完整 var_dump 位于 pastebin.com/x1YrjdGc,$_POST 的完整 var_dump 位于 pastebin.com/fa9zkTWa,谢谢!
  • 在你的$_POST-array 中可能至少有 1 个event-block 没有id-field。
  • 虽然疯狂的是,当我尝试显示一个计数器以显示它通过循环的次数时,它总是在第一次迭代后停止。这有关系吗?

标签: php arrays


【解决方案1】:

您的数组索引似乎包含单引号。

试试

echo $event["'id'"];

【讨论】:

  • 啊,非常感谢!在变量传递给 POST 之前的代码中的其他地方,由于某种原因,单引号被转义了。我真的很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 2011-02-21
  • 2016-08-17
  • 2012-05-23
相关资源
最近更新 更多