【发布时间】:2010-02-25 18:37:11
【问题描述】:
我正在检索一堆数据,但由于某种原因,其中一些数据已损坏。例如,我有一些 Post 模型,每个模型都与 Comment 模型(hasMany)相关,并且每个 Comment 模型都属于一个用户。检索数据时,这是我从数据库中获取的 cmets 数据:
[Post] => Array
(
)
[Comments] => Array
(
[0] => Array
(
[content] => "2010 has definitely been a busy year!"
[created] => 2010-02-10 13:47:15
[user_id] => 18
[post_id] => 1
[User] => Array
(
[id] => U8
[username] => Uace
[first_name] => Uace
)
[_explicitType] => Comment
)
[0] => Array
(
[content] => "I can't wait..."
[created] => 2009-12-10 13:57:36
[user_id] => 18
[post_id] => 1
[User] => Array
(
[id] => U8
[username] => Uace
[first_name] => Uace
)
[_explicitType] => Comment
)
)
每个 Comments[i][User] 数组的第一个字符已替换为大写 U,但在每种情况下它应该不同(例如 ID 为 18,用户名 Jace 等)。
我将其追溯到我正在使用的数组操作,用于在 afterFind() 函数中为 Flex 交互分配一个 _explicitType 字段(谢谢,Paweł Mysior!)。这是我陷入 _explicitType 的循环:
if (is_array($results)) {
foreach ( $results as &$item )
{
$item['_explicitType'] = $this->name;
}
} else {
$item[$this->name]['_explicitType'] = $this->name;
}
我认为它与引用分配有关,但我想不出它为什么会发生。
【问题讨论】:
-
FOR 循环似乎可以在不破坏数组的情况下工作,但是在尝试处理没有数字索引的数组时会变得混乱。
标签: php arrays pass-by-reference cakephp-1.2