我对foreach循环和引用有一个奇怪的问题。 这是我的代码:
$authors = array(
new Author(array('first_name'=>'Name 1','last_name'=>'last name 1')),
new Author(array('first_name'=>'name 1','last_name'=>'last name 2')),
);
foreach($authors as $key => $author){
$authors[$key] = Author::manager()->getOrCreate($author);
print $author->id."-".$authors[0]->id."<br>";
}
因此,如果我们假设这两个对象都是在数据库中创建的,那么显示的输出是:
1-1
2-2
你猜我的问题是:为什么$authors[0]->id
指的是$author->id
?
我想这是引用的问题,但由于我不在foreach循环中使用引用,我不知道它来自哪里!
欢迎任何建议。 感谢
答案 0 :(得分:1)
为什么$ authors [0] - &gt; id引用$ author-&gt; id ??
它不(在第一次迭代后)。
其他地方出现了问题(可能在Author::__construct
或Author::manager
):
class Author
{
public $id;
function __construct($params)
{
$this->id = substr($params['last_name'], -1);
}
}
$authors = array(
new Author(array('first_name'=>'Name 1','last_name'=>'last name 1')),
new Author(array('first_name'=>'name 1','last_name'=>'last name 2')),
);
foreach($authors as $key => $author){
print $author->id."-".$authors[0]->id."<br>";
}
/*
output:
1-1
2-1
*/