我將C#代碼移植到PHP。PHP數組不可索引
但是,它似乎像PHP忽略數組引用。下面的代碼給出了最後一個元素3次。我怎樣才能解決這個問題?
class Participants
{
public $name;
public $country;
public $town;
}
class Test
{
public function __construct()
{
$this->List = array(new Participants());
}
public function test()
{
$p = new Participants();
$p->name = "Harry";
$p->town = "Washington";
$p->country = "USA";
$List[0] = $p;
$p->name = "Janette";
$p->town = "Amsterdam";
$p->country = "Netherlands";
$List[1] = $p;
$p->name = "Piotr";
$p->town = "Moscow";
$p->country = "Russia";
$List[2] = $p;
echo $List[0]->name;
echo $List[1]->name;
echo $List[2]->name;
// this unfortunately ignores the index and echoes 3 times the last element.
}
}//end Test Class
_或_...您創建了一個對象而不是三個,並將該數組的每個項目分配給相同的東西。只要算一下你使用'new'的次數,如果你來自C#背景,問題應該很清楚 – Clive
@ user3416660我刪除了關於移位寄存器等的段落,因爲它是不相關的和不正確的。請保持您的問題簡短並且重要。你也是構造函數'$ this-> List = array(new Participants());''不會做你認爲它做的事。在PHP中,您不需要在數組中聲明值的類型。 '$ this-> List = array();'就夠了。或者甚至更好地把它變成一個類變量。 – dtech
嘗試了這一點,但它不能解決問題。使用舊的構造函數,count()函數至少返回了正確數量的數組元素。使用你縮短的構造函數,count函數返回零。 – user3416660