2015-07-05 139 views
1

我有一個「obj」對象和一個「str」字符串。 如何從「obj」設置$ str屬性? 這是我的嘗試:從PHP中的對象設置變量屬性

$jsonStr = '{"foo":"bar","number":1}'; 
$jsonObj = json_decode($jsonStr); 
$property = $_GET["prop"]; 
$jsonObj->$property = "value"; 
file_put_contents("OUT",json_encode($jsonObj)); 

它總是輸出 「{}」!

注意:請對不起英文不好,我不是英語母語的人。

編輯: 我試着var_dump()代碼中的每個變量。

  • $ _GET [ 「託」]"foo"
  • $ jsonObj實際上是object(stdClass)#1 (1) {["foo"]:"value", ["number"]:1}

所以誤差在file_put_contents("OUT",json_encode($jsonObj)); ...

編輯2: 我發現了錯誤! 在實際代碼中,我寫了

$jsonStr = '{"foo":"bar","number":1}'; 
$jsonObj = json_decode($jsonStr); 
$property = $_GET["prop"]; 
$jsonObj->$property = "value"; 
file_put_contents("OUT",json_encode(  ---->$jsonStr<----- ERROR!)); 

感謝您的幫助!

+0

你確定是你的所有代碼嗎?由於@AlexanderMadyuskin說你的代碼工作正常。 –

+0

$ jsonObj - > $ property =「value」;這是什麼?...爲什麼你使用這樣的語句.. –

+0

我使用它來保存使用PHP和JavaScript的文件中的JS變量。客戶端做類似set.php的東西?prop = foo&value = bar。它們全部保存在單個JSON文件中。爲了得到它們,用戶調用get.php?prop = foo。 – SergSoftwares

回答

1

根本就

file_put_contents("OUT",json_encode($jsonObj)); 

,而不是

file_put_contents("OUT",json_encode($jsonStr)); 

的代碼實際工作! 這是一個拼寫錯誤。