偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

PHP 中的 stdClass 是什么?有什么作用?

開發(fā)
通俗的說,stdclass 就是PHP中的空類,用于將其他類型轉(zhuǎn)換為對象。下面我針對不同使用場景來分析一下stdclass。

對于 stdclass 官方文檔介紹它是具有動態(tài)屬性的通用空類。此類的對象可以使用 new 實(shí)例化,也可以通過類型轉(zhuǎn)換為對象創(chuàng)建。幾個(gè) PHP 函數(shù)也會創(chuàng)建此類的實(shí)例,比如 json_decode()、mysqli_fetch_object() 或 PDOStatement::fetchObject()。

通俗的說,他就是PHP中的空類,用于將其他類型轉(zhuǎn)換為對象。比如數(shù)組,字符串等轉(zhuǎn)換成一個(gè)自定義的對象,常見的有json_decode(),將字符串json格式的數(shù)據(jù)轉(zhuǎn)換成一個(gè)對象形式。

下面我針對不同使用場景來分析一下stdclass。

1. 數(shù)據(jù)存儲

PHP開發(fā)過程中存儲數(shù)據(jù)用的最多的時(shí)數(shù)組,但是我們還可以使用對象來存儲。如果不想自己自定義一個(gè)類,來存儲數(shù)據(jù),就可以使用 stdclass 

(1) 數(shù)組存儲

// 定義數(shù)組存儲個(gè)人信息
$personal_array = [
"name" => "Tinywan",
"home" => "www.tinywan.com",
"address" => "ZheJiang HangZhou"
];

// 顯示數(shù)組內(nèi)容
print_r($personal_array);

輸出結(jié)果如下:

Array
(
    [name] => Tinywan
    [home] => www.tinywan.com     
    [address] => ZheJiang HangZhou
)

(2) 對象存儲

$personal_object = newstdClass();
$personal_object->name = "Tinywan";
$personal_object->home = "www.tinywan.com";
$personal_object->address = "ZheJiang HangZhou";

// 顯示對象內(nèi)容
print_r($personal_object);

注意:這里定義的對象,可以動態(tài)增加屬性

輸出結(jié)果如下:

stdClass Object
(
    [name] => Tinywan
    [home] => www.tinywan.com     
    [address] => ZheJiang HangZhou
)

當(dāng)然,數(shù)組和stdclass之間是可以互相轉(zhuǎn)換。數(shù)組轉(zhuǎn)stdclass對象非常方便,直接使用(object)進(jìn)行強(qiáng)轉(zhuǎn)即可:

$personal_array = [
"name" => "Tinywan",
"home" => "www.tinywan.com",
"address" => "ZheJiang HangZhou"
];
$personal_object = (object) $personal_array;

// 顯示對象內(nèi)容
print_r($personal_object);

輸出內(nèi)容:

stdClass Object
(
    [name] => Tinywan
    [home] => www.tinywan.com     
    [address] => ZheJiang HangZhou
)

對象轉(zhuǎn)數(shù)組也是一樣的:

$personal_object = newstdClass();
$personal_object->name = "Tinywan";
$personal_object->home = "www.tinywan.com";
$personal_object->address = "ZheJiang HangZhou";

$personal_array = (array) $personal_object;
// 顯示數(shù)組內(nèi)容
print_r($personal_array);

輸出內(nèi)容:

Array
(
    [name] => Tinywan
    [home] => www.tinywan.com
    [address] => ZheJiang HangZhou
)

2. stdclass不是PHP對象的基類

這里需要注意的是,盡管是泛型類,stdClass 并不是 PHP 中對象的基類,我們可以使用 instanceof 關(guān)鍵字來證明這一點(diǎn)。

classTinywan{

}

$objClass = newTinywan();
if ($objClass instanceof\stdClass){
echo'Yes';
} else {
echo'No';
}

輸出結(jié)果:No

結(jié)果證明,stdclass并不是PHP的基類。

3. json_encode() 、 json_decode()與stdclass的關(guān)系

json_encode() 和 json_decode() 是專門用于對 JSON 字符串執(zhí)行操作的函數(shù)。json_encode() 用于將 Array 轉(zhuǎn)換為 JSON 字符串 。因此,首先,我們將一個(gè)對象轉(zhuǎn)換為 JSON 字符串,然后使用 json_decode() 將其轉(zhuǎn)換為對象。

$empInfo = array(
'name'=>'John',
'address'=>'Houston',
'employment' => array(
'id' => '1',
'address' => 'Los Angeles'
    )
);
print_r(json_decode(json_encode($empInfo)));

輸出結(jié)果如下:

stdClass Object
(
   [name] => John
   [address] => Houston
   [employment] => stdClass Object
      (
         [id] => 1
         [address] => Los Angeles
      )
)
責(zé)任編輯:趙寧寧 來源: 編程經(jīng)驗(yàn)共享
相關(guān)推薦

2023-03-28 07:03:15

gRPCMetadata

2021-01-21 17:27:05

區(qū)塊鏈加密貨幣穩(wěn)定幣

2022-05-16 23:10:54

穩(wěn)定幣區(qū)塊鏈加密貨幣

2025-02-20 10:04:35

2025-02-27 09:30:00

MySQLLog Buffer數(shù)據(jù)庫

2009-07-07 16:38:36

ServletCont

2009-12-07 17:20:29

PHP stdClas

2011-08-19 08:58:34

Linux

2024-12-25 16:04:53

2021-08-23 06:22:00

PaaSDevOps平臺即服務(wù)

2012-05-03 08:34:15

LinuxKconfig

2021-07-06 07:27:45

React元素屬性

2022-04-08 13:58:19

物聯(lián)網(wǎng)車隊(duì)管理企業(yè)

2020-03-11 08:15:08

物聯(lián)網(wǎng)智慧城市互聯(lián)網(wǎng)

2022-09-27 09:52:14

物聯(lián)網(wǎng)邊緣計(jì)算

2021-04-19 21:58:32

智能照明商業(yè)建筑

2019-12-02 08:18:51

CISO首席信息安全官網(wǎng)絡(luò)安全

2022-02-18 11:06:12

首席技術(shù)官技術(shù)人工智能

2010-04-23 16:56:26

OracleSQL調(diào)優(yōu)

2023-10-23 19:45:04

物聯(lián)網(wǎng)物模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號