首頁  >  文章  >  後端開發  >  php中物件怎麼轉換數組

php中物件怎麼轉換數組

PHPz
PHPz原創
2023-04-17 14:14:39601瀏覽

在PHP中,物件(Object)和陣列(Array)是兩種不同的資料類型。但是有時候我們需要將一個物件轉換成數組,例如將一個類別實例化物件的屬性和方法轉換成一個陣列方便使用。

在PHP中,有幾種方法可以實現物件到陣列的轉換。

1. 使用get_object_vars()函數

這是最基礎的方法,也是最簡單的方法。 get_object_vars()函數可以傳回一個物件中所有的屬性和屬性值所組成的陣列。

例如:

class MyClass {
    public $a = 1;
    protected $b = 2;
    private $c = 3;

    public function test(){
        return "hello world!";
    }
}

$obj = new MyClass();
$array = get_object_vars($obj);

print_r($array);

輸出:

Array
(
    [a] => 1
)

可以看到,get_object_vars()函數只取得了公有屬性$a的值,而對於受保護和私有屬性$ b和$c,它們的值並沒有取得到。

2. 使用物件強制型別轉換

在PHP中,可以使用強制型別轉換(Type Casting)將一個物件轉換成陣列。強制型別轉換使用的是「(array)」這個關鍵字。

例如:

class MyClass {
    public $a = 1;
    protected $b = 2;
    private $c = 3;

    public function test(){
        return "hello world!";
    }
}

$obj = new MyClass();
$array = (array) $obj;

print_r($array);

輸出:

Array
(
    [a] => 1
    [*b] => 2
    MyClassprivatec] => 3
)

此陣列包含了所有的屬性和屬性值,但是受保護和私有屬性會帶上一個*或類別名稱前綴,區別於公共屬性。

要注意的是,這種方法並不會列出物件中的方法,只會列出物件的屬性。

3. 使用json_decode()函數

在PHP中,可以使用json_decode()函數將一個JSON格式的字串轉換成陣列或物件。因此,可以將一個物件的屬性以JSON格式編碼,然後再解碼為陣列。

例如:

class MyClass {
    public $a = 1;
    protected $b = 2;
    private $c = 3;

    public function test(){
        return "hello world!";
    }
}

$obj = new MyClass();
$json = json_encode($obj);
$array = json_decode($json, true);

print_r($array);

輸出:

Array
(
    [a] => 1
    [b] => 2
    [MyClassprivatec] => 3
)

要注意的是,這個方法同樣會將受保護和私有屬性轉換成數組,但是會加上類別名前綴。

總結

以上是幾個物件轉換成陣列的方法,包括使用get_object_vars()函數、強制型別轉換和json_decode()函數。其中最常用的是強制型別轉換和json_decode()函數。

要注意的是,在使用強制型別轉換和json_decode()函數時,受保護和私有屬性的值可能會帶上類別名稱前綴或*等符號,需要針對具體情況予以處理。

以上是php中物件怎麼轉換數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn