background image

保存"名值对"(name/value)的关联数组(associative 

array

 

)。

由于 javascript 不支持关联数组,所以 json_encode()只将索引数组(indexed 

array

)转为数

组格式,而将关联数组(associative 

array

 

)转为对象格式。

 

比如,现在有一个索引数组
代码如下:
 
  

$arr

 = Array('one', 'two', 'three'); 

  

echo

 json_encode(

$arr

); 

 

 

结果为:
  ["one","two","three"] 

 

如果将它改为关联数组:
  

$arr

 = Array('1′=>'one', '2′=>'two', '3′=>'three'); 

  

echo

 json_encode(

$arr

); 

 

结果就变了:
  {"1″:"one","2″:"two","3″:"three"} 
注意,数据格式从"[]"(数组)变成了"{}"

 

(对象)。

如果你需要将"索引数组"强制转化成"对象"

 

,可以这样写

  json_encode( (object)

$arr

 ); 

 

或者
  json_encode ( 

$arr

, JSON_FORCE_OBJECT ); 

 
三、类(

class

 

)的转换

 
下面是一个 PHP

 

的类:

代码如下:
 
  

class

 Foo { 

    

const

 ERROR_CODE = '404′; 

    

public

 

$public_ex

 = 'this is public'; 

    

private

 

$private_ex

 = 'this is private!'; 

    

protected

 

$protected_ex

 = 'this should be protected'; 

    

public

 

function

 getErrorCode() { 

      

return

 self::ERROR_CODE; 

    } 
  } 
 
现在,对这个类的实例进行 json

 

转换:

代码如下:
 
  

$foo

 = 

new

 Foo; 

  

$foo_json

 = json_encode(

$foo

); 

  

echo

 

$foo_json