HOWTO · PHP
如何在 PHP 中建立物件陣列
本文介紹如何在 PHP 中建立物件陣列
本頁內容
PHP 陣列可以存放物件。你可以用 array() 將類別實例組成陣列、把 stdClass 實例存入數字索引,或逐一依索引將類別實例加入陣列。這三種做法中,陣列索引用來識別物件;name 和 type 等屬性則屬於物件本身。
以下範例是程式碼示意,沒有附上實際執行後擷取的輸出;執行程式碼時,可透過每個 print_r() 呼叫查看陣列及其中的物件。
在 PHP 中建立類別物件陣列
先定義類別並建立物件,再將物件傳入 array()。此例中的每個 Motorcycle 都有公開的 name 和 type 屬性。建立後的 $bikes 陣列有兩個項目,索引分別是 0 和 1。
<?php
class Motorcycle
{
public $name;
public $type;
}
$bike1 = new Motorcycle();
$bike1->name = 'Husqvarna';
$bike1->type = 'dirt';
$bike2 = new Motorcycle();
$bike2->name = 'Goldwing';
$bike2->type = 'touring';
$bikes = array($bike1, $bike2);
print_r($bikes);
print_r() 會顯示陣列索引,以及各物件的屬性。name 和 type 的值不是陣列本身的鍵,而是索引 0 和 1 所指向的 Motorcycle 物件屬性。
在 PHP 中建立 stdClass 物件陣列
PHP 的 stdClass 是通用類別,可以為其實例指定屬性。stdClass 實例是物件,不是陣列。先將每個實例存入 $bikes 陣列,再設定該索引所指向物件的 name 和 type:
<?php
$bikes = array();
$bikes[0] = new stdClass();
$bikes[0]->name = 'Husqvarna';
$bikes[0]->type = 'dirt';
$bikes[1] = new stdClass();
$bikes[1]->name = 'Goldwing';
$bikes[1]->type = 'touring';
print_r($bikes);
此處的 $bikes[0] 和 $bikes[1] 是物件;name 和 type 則是指派給各物件的屬性。若只需要簡單物件,且不必另外定義具名類別,這種做法就很實用。
使用 PHP 的 array() 函式建立物件陣列
你也可以先將 $bikes 初始化為空陣列,再加入 Motorcycle 物件。這和第一個範例的建立順序相反:先建立陣列,再把新物件指派給各個索引,並設定該物件的屬性。
<?php
class Motorcycle
{
public $name;
public $type;
}
$bikes = array();
$bikes[0] = new Motorcycle();
$bikes[0]->name = 'Husqvarna';
$bikes[0]->type = 'dirt';
$bikes[1] = new Motorcycle();
$bikes[1]->name = 'Goldwing';
$bikes[1]->type = 'touring';
print_r($bikes);
如果你想逐項建立陣列,例如在處理輸入資料時,可以使用這種寫法。這兩種以類別建立物件的方式,最後都會得到以數字索引指向物件的陣列;各物件的屬性仍屬於物件本身。