PHP로 C# 코드를 이식하고 있습니다.PHP 배열이 인덱스 가능하지 않습니다.
그러나 PHP에서는 배열 참조를 무시합니다. 아래 코드는 마지막 요소를 세 번 나타냅니다. 이 문제를 어떻게 해결할 수 있습니까? PHP에서
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
_Or _... 3 개가 아닌 하나의 객체를 만들고 동일한 배열에 배열의 각 항목을 할당했습니다. 그냥'new '을 사용하고있는 횟수를 세고 C# 배경에서 오는 경우 문제가 명확해야합니다. – Clive
@ user3416660 시프트 레지스터 등에 대한 단락을 삭제했습니다. 부적절하거나 잘못되었습니다. 귀하의 질문을 짧고 정확하게 지키십시오. 또한 생성자'$ this-> List = array (new Participants());'는 당신이 생각하는 것을하지 않습니다. PHP에서는 배열의 값 유형을 선언 할 필요가 없습니다. '$ this-> List = array();'로 충분합니다. 또는 클래스 변수를 더 좋게 만들 수도 있습니다. – dtech
이 문제가 해결되었지만 문제가 해결되지는 않습니다. 이전 생성자를 사용하면 count() 함수가 최소한 올바른 배열 요소 수를 반환했습니다. 단축 생성자를 사용하면 count 함수가 0을 반환합니다. – user3416660