深入理解PHP JSON數(shù)組與對象
來源:易賢網(wǎng) 閱讀:726 次 日期:2016-08-12 14:43:11
溫馨提示:易賢網(wǎng)小編為您整理了“深入理解PHP JSON數(shù)組與對象”,方便廣大網(wǎng)友查閱!

在PHP后端和客戶端數(shù)據(jù)交互的過程中,JSON數(shù)據(jù)中有時(shí)格式不定,一會兒是數(shù)組,一會兒是對象,弄得客戶端開發(fā)人員要崩潰的感覺。

因此,前后端相關(guān)人員先對PHP的json_encode函數(shù)原理有必要的了解是最重要的一個(gè)環(huán)節(jié)。

PHP中的array是個(gè)萬能的數(shù)據(jù)結(jié)構(gòu),并不像其它語言根據(jù)需要的場景會定義很多約束性的數(shù)據(jù)類型來描述結(jié)構(gòu),所以PHP程序員是很難給客戶端人員講清楚返回的是什么結(jié)構(gòu)的數(shù)據(jù)的。

也就變成明明是通過PHP的數(shù)組數(shù)據(jù)編碼成json的,但輸出值有時(shí)是數(shù)組、有時(shí)是對象的情況。

<?php

/*

如果你想生成一個(gè)json格式的數(shù)組格式(Vector)而非對象格式(Map)的,那么數(shù)據(jù)的下標(biāo):

必須是數(shù)字索引,

必須從0開始,

必須從小到大依次增加、中間不可以跳躍、順序不可變動(dòng).

*/

//符合數(shù)組

$vector = [

12, 23, 18

];

echo json_encode($vector);

//符合數(shù)組

$vector2 = [

0 => 12, 1 => 23, 2 => 18

];

echo json_encode($vector2);

//不符合數(shù)組,下標(biāo)有跳躍

$map = [

0 => 12, 1 => 23, 2 => 18, 4 => 20

];

echo json_encode($map);

//不符合數(shù)組,下標(biāo)順序不對

$map = [

0 => 12, 1 => 23, 3 => 18, 2 => 20

];

echo json_encode($map);

//不符合數(shù)組,下標(biāo)沒有從0開始

$map_1 = [

1 => '111', 2 => 'asdfa'

];

echo json_encode($map_1);

//典型的對象格式

$map_2 = ['abc' => 1, 'de' => 2, 'fi' => null];

echo json_encode($map_2);

/**

* 請注意上面的變量命名,對應(yīng)于Hack中的概念,Vector和Map為兩種數(shù)據(jù)集合類型

* 如果你需要將"索引數(shù)組"強(qiáng)制轉(zhuǎn)化成"對象",可以這樣寫

* json_encode((object) $a);

* 或

* json_encode ($a, JSON_FORCE_OBJECT);

*

*/

解決方案是什么呢?

就是通過PHP封裝Vector和Map這兩種數(shù)據(jù)結(jié)構(gòu)的類,在構(gòu)造json輸出結(jié)構(gòu)時(shí),以這兩種類型做封裝和轉(zhuǎn)換,來確保結(jié)構(gòu)的確定性。

以上所述是小編給大家介紹的PHP JSON數(shù)組與對象,希望對大家有所幫助

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:深入理解PHP JSON數(shù)組與對象
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)