programing

PHP 개체 배열

projobs 2022. 9. 29. 22:05
반응형

PHP 개체 배열

그래서 나는 한참을 찾고 있지만 간단한 질문에 대한 답을 찾을 수 없다.PHP에서 객체 배열을 가질 수 있습니까?예를 들어 다음과 같습니다.

$ar=array();    
$ar[]=$Obj1    
$ar[]=$obj2

어떤 이유에서인지 나는 그 답을 어디에서도 찾을 수 없었다.가능할 것 같지만 확인만 하면 돼요.

이와 같은 일반적인 질문(그리고 다소 쉬운 질문)에 대한 답변을 찾는 가장 좋은 장소는 PHP 문서에서 읽는 것입니다.특히 객체에 대한 자세한 내용을 볼 수 있습니다.stdObject 및 인스턴스화된 개체를 배열 내에 저장할 수 있습니다.실제로, 오브젝트의 멤버 변수를 데이터베이스 행의 값으로 채우는 'hydication'이라고 불리는 프로세스가 있으며, 그 후 오브젝트는 어레이에 저장되어(다른 오브젝트와 함께), 액세스를 위해 호출 코드로 돌아간다.

--편집 --

class Car
{
    public $color;
    public $type;
}

$myCar = new Car();
$myCar->color = 'red';
$myCar->type = 'sedan';

$yourCar = new Car();
$yourCar->color = 'blue';
$yourCar->type = 'suv';

$cars = array($myCar, $yourCar);

foreach ($cars as $car) {
    echo 'This car is a ' . $car->color . ' ' . $car->type . "\n";
}

네.

$array[] = new stdClass;
$array[] = new stdClass;

print_r($array);

결과:

Array
(
    [0] => stdClass Object
        (
        )

    [1] => stdClass Object
        (
        )

)

네, PHP에 객체 배열을 포함할 수 있습니다.

class MyObject {
  private $property;

  public function  __construct($property) {
    $this->Property = $property;
  }
}
$ListOfObjects[] = new myObject(1); 
$ListOfObjects[] = new myObject(2); 
$ListOfObjects[] = new myObject(3); 
$ListOfObjects[] = new myObject(4); 

print "<pre>";
print_r($ListOfObjects);
print "</pre>";

어레이는 포인터를 유지할 수 있기 때문에 오브젝트 배열을 원할 때 포인터를 유지할 수 있습니다.

$a = array();
$o = new Whatever_Class();
$a[] = &$o;
print_r($a);

그러면 개체가 참조되고 어레이를 통해 액세스할 수 있음을 알 수 있습니다.

다음과 같은 작업을 수행할 수 있습니다.

$posts = array(
  (object) [
    'title' => 'title 1',
    'color' => 'green'
  ],
  (object) [
    'title' => 'title 2',
    'color' => 'yellow'
   ],
   (object) [
     'title' => 'title 3',
     'color' => 'red'
   ]
);

결과:

var_dump($posts);

array(3) {
  [0]=>
  object(stdClass)#1 (2) {
    ["title"]=>
    string(7) "title 1"
    ["color"]=>
    string(5) "green"
  }
  [1]=>
  object(stdClass)#2 (2) {
    ["title"]=>
    string(7) "title 2"
    ["color"]=>
    string(6) "yellow"
  }
  [2]=>
  object(stdClass)#3 (2) {
    ["title"]=>
    string(7) "title 3"
    ["color"]=>
    string(3) "red"
  }
}

또 다른 직관적인 솔루션은 다음과 같습니다.

class Post
{
    public $title;
    public $date;
}

$posts = array();

$posts[0] = new Post();
$posts[0]->title = 'post sample 1';
$posts[0]->date = '1/1/2021';

$posts[1] = new Post();
$posts[1]->title = 'post sample 2';
$posts[1]->date = '2/2/2021';

foreach ($posts as $post) {
  echo 'Post Title:' . $post->title . ' Post Date:' . $post->date . "\n";
}

제시된 답변은 모두 맞지만 실제로는 []구조를 사용하여 어레이를 오브젝트로 채우는 문제에 완전히 답하지 않습니다.

인덱스 번호를 지정하지 않고 PHP에서 오브젝트 배열을 구축하는 방법에서 보다 적절한 답변을 찾을 수 있습니다.문제를 해결하는 방법을 명확하게 보여줍니다.

언급URL : https://stackoverflow.com/questions/8612190/array-of-php-objects

반응형