[英]PHP - json encode/decode process convert associative array to object
我需要將 php 變量存儲到文件中,所以我決定序列化或 jsonize(也許 jsonify XD)它們。
出於便攜性目的,我更喜歡 json 解決方案...
在測試期間,我注意到關聯數組被 json 解碼為對象,我不能將其用作關聯數組,但我必須用作對象。
非關聯數組被正確地 json 解碼為非關聯數組。
難道我做錯了什么?
或者這只是 php json 函數的正常行為
這里是示例代碼
$test = array("test1" => 1, "test2" => 2);
$json = json_decode(json_encode($test));
$serialize = unserialize(serialize($test));
//output -> stdClass::__set_state(array( 'test1' => 1, 'test2' => 2, ))
// cant access to $json["test1"] as in $test but $json->test why?????
var_export($json);
//ouptut -> array ( 'test1' => 1, 'test2' => 2, )
//here i can $serialize["test1"]
var_export($serialize);
你試過json_decode($test, true)
嗎?
您可以設置第二個參數。 當為 TRUE 時,返回的對象將被轉換為關聯數組。 http://php.net/manual/en/function.json-decode.php
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
輸出:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
是的,我已經在用了...
如果我使用json_decode($test, true)
適用於關聯數組,但json_decode($test, true)
用於對象,因為原始對象將被解碼為數組...
所以問題是我必須將解碼的變量作為原始變量(對於這兩種情況)。
我編碼我的變量,然后存儲在一個文件中,然后解碼,我必須以訪問原始變量的相同方式訪問它們,所以如果原始變量是關聯數組,我必須將它作為關聯數組x["field"]
,如果原始變量是我必須作為對象x->field
訪問的對象。
序列化完成這項工作,json 不,那是我關心的……也許 json 不是為此目的而考慮的?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.