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
'programing' 카테고리의 다른 글
"is" 연산자는 정수로 예기치 않게 동작합니다. (0) | 2022.09.29 |
---|---|
matplotlib의 리버스 colormap (0) | 2022.09.29 |
프로젝트 중 C 프로그램에서 소스 코드를 읽는 방법은 무엇입니까? (0) | 2022.09.29 |
set_time_limit()와 ini_set의 차이('max_execution_time', ...) (0) | 2022.09.29 |
시간대 문제를 수정하기 위해 추가 파라미터를 MariaDB 연결 문자열에 전달하는 방법(예: useLegacyDatetimeCode) (0) | 2022.09.29 |