【问题标题】:Issue with a foreach statement [closed]foreach 语句的问题[关闭]
【发布时间】:2013-02-18 22:39:55
【问题描述】:

我想更新这个问题:Populating a calendar with PHP foreach code

由于某种奇怪的原因,问题再次出现,它说我为 foreach 提供的参数无效。奇怪的是,它在我的本地主机网站上运行良好。

结果应该是代码应该显示一个填充的日历。它在我的本地主机服务器上运行,但在网站上不在线。我很困惑。

这已经为我的本地主机服务器修复了它:

foreach(array_merge(array_values($history), array_values($events)) as $event)

但是当我把网站放到网上时,chrome 只是给了我这个:

<b>Warning</b>:  array_values() [<a href='function.array-values'>function.array-values</a>]: The argument should be an array in <b>/home/flyeurov/public_html/lib/skins/flyeuro/events/events_index.tpl</b> on line <b>30</b>
<b>Warning</b>:  array_merge() [<a href='function.array-merge'>function.array-merge</a>]: Argument #2 is not an array in <b>/home/flyeurov/public_html/lib/skins/flyeuro/events/events_index.tpl</b> on line <b>30</b>
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/flyeurov/public_html/lib/skins/flyeuro/events/events_index.tpl</b> on line <b>30</b><br />

确认数组 $history 和 $events 可以工作。

【问题讨论】:

  • 如何确认?以及如何工作?因为显然$events 不是一个数组。
  • 解决问题的第一件事就是将碎片移出 foreach。 $hist = array_merge(array_values($history);$ev=array_values($events);var_dump($hist);var_dump($ev); 这样你就可以看到数据发生了什么。
  • $events$history 在不同的文件中。 foreach 语句位于 .tpl 文件中,其中应用了两个变量。我所做的确认它有效,首先用默认的foreach ($events as $event) 替换了foreach,但它没有用。当我用默认版本替换 .tpl 时,一切正常。我认为那可行吗?
  • Philipp 在下面的回答中是正确的,$history 或 $events 不是导致其余问题的数组,第一个警告证实了这一点。
  • 正如我所说的 $events 不是一个数组。它是一个对象或其他东西,但不是一个数组。 @zzwyb89

标签: php foreach


【解决方案1】:

$history$events 都不是数组,因此 array_values 不返回数组,array_merge 也不返回数组,这会在 foreach 循环中引发另一个警告。

检查 var_dump 是否两个 var 都是数组而不是标量值或对象

【讨论】:

  • 我不明白为什么它可以在我的本地主机服务器上运行并且不在线。如何将上述变量转为数组?
  • 其实是一个数组:pastebin.com/HhHXBQyG
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2012-11-05
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多