私はforeachループと参照に奇妙な問題があります。 はここに私のコードです:私たちはそれらのオブジェクトの両方がデータベースに作成されていることを前提とした場合のでPHP 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ループで参照を使用しないので、どこから来たのかわかりません!
どのようなご提案も歓迎いたします。 ありがとう
あなたは出力を1-1、2-1ではありませんか?それが出力するものと同じように見えます。ただ確認したかったですか? –
$ authors配列を作成するときにidを保存しないので、0,1、...に設定されます。したがって、$ authors [0]は最初の繰り返しで$ authorと同じになります。 –
@Ben出力は間違いありません1-1 2-2。 – renard