【发布时间】:2018-04-19 18:13:20
【问题描述】:
我已经在 Stackoverflow 上对这个主题进行了一些搜索,但是据我所知,我没有将数组视为字符串?
我收到的信息是:
第 42 行 X 中数组到字符串的转换
我的代码的第 42 行是 foreach 循环的开头:
foreach ($collection as $element) {
变量$collection是一个基于数据库输出的缓存迭代器:
$collection=new \CachingIterator(new \ArrayIterator($this->dbData));
如果我在$this->dbData 上print_r(),我肯定会得到一个数组:
Array
(
[0] => Array
(
[c_id] => A
)
[1] => Array
(
[c_id] => B
)
所以,总结一下:
- 我们有一个数组的确认输出
- 我们知道
ArrayIterator()需要array作为参数 - 我们知道
CachingIterator()需要Iterator作为参数 - 我们知道
foreach()可以遍历Iterator
TL;DR 我真的不确定我在这里将什么视为字符串?
编辑添加....
即使我大大简化了我的代码,我仍然可以重现:
<?php
error_reporting (E_ALL | E_STRICT);
ini_set ('display_errors', 1);
$arrX=array(array("c_id"=>"A"),array("c_id"=>"B"));
$collection=new \CachingIterator(new \ArrayIterator($arrX));
foreach($collection as $element) {
echo $element["c_id"].PHP_EOL;
}
注意:第 6 行 /Users/bp/tmp/test.php 中的数组到字符串的转换
一个
注意:第 6 行 /Users/bp/tmp/test.php 中的数组到字符串的转换
B
【问题讨论】:
-
如果你
var_dump( $collection );你看到了什么? -
只有你能确定一切,但我们不是。显示
var_dump( $collection );的使用代码和输出 -
我非常怀疑那是产生错误的行。
-
另外,在你的
foreach()行之后会出现什么? -
如果您在
foreach之前添加了一个exit,您还会收到错误消息吗?