两个PHP对象引用同一个实例


two php objects refers the same instance

我在for循环中创建了同一个类的实例。但这些实例似乎指的是同一个对象。

下面是代码;

class Content{
    /**
     * current content id
     * @var int 
     */
    public $id;
    function __construct($id){
        echo " <br>Construct content ".$id;
    }
    function createContentOfPage($id){
        $contentIdArray = $this->dbo->getContentIdsForPage($id);
        /*var_dump of $contentIdArray aray is given below*/
        if(is_array($contentIdArray) && count($contentIdArray)>0){
        $contentArray = array();    
            foreach ($contentIdArray as $Id){
                echo "<br>Content id: ".$Id['content_id'];
                array_push($contentArray, new Content(($id['content_id'])));
            }
        }
    }
}

下面是$ contentiarray

的var_dump
array(2) {
  [0]=>
  array(1) {
    ["content_id"]=>
    string(1) "1"
  }
  [1]=>
  array(1) {
    ["content_id"]=>
    string(1) "2"
  }
}

如果我运行createContentOfPage(),这是输出;

Content id: 1 
Construct content 1
Content id: 2 
Construct content 1

我在这里做错了什么?请帮助。

你使用了不同的ID变量:

echo "<br>Content id: ".$Id['content_id'];
array_push($contentArray, new Content(($id['content_id'])));

始终使用$Id$id—在本例中,您需要使用$Id


你应该避免像这样隐藏变量。调用数组迭代器变量$contentId和参数$pageId,或者类似的东西。