2015-07-05 55 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)); 

的代码实际工作! 这是一个拼写错误。