从php编辑json对象
我以这种方式读取json从php编辑json对象,php,json,Php,Json,我以这种方式读取json $app = json_decode($dati); foreach($app->ambient as $mydata){ foreach($mydata->layer as $mydata2){ foreach($mydata2->layer_obj as $mydata3){ if($mydata3->obj == "ipcam"){ }
$app = json_decode($dati);
foreach($app->ambient as $mydata){
foreach($mydata->layer as $mydata2){
foreach($mydata2->layer_obj as $mydata3){
if($mydata3->obj == "ipcam"){
}
}
}
}
当我在if中时,我应该能够更改对象的某些变量,我已经尝试了各种方法,但没有成功
对象$mydata3是这样的
{
obj: "ipcam",
indirizzo_locale: {
ip: "0.0.0.0",
port: "80",
url: "/test",
username: "admin",
password: "admin"
},
indirizzo_remoto: {
ip: "0.0.0.0",
port: "80",
url: "/test",
username: "admin",
password: "admin"
}
}
如果需要对正在迭代的对象进行更改,则需要使用
&
符号通过引用访问成员:
foreach($app->ambient as &$mydata){
foreach($mydata->layer as &$mydata2){
foreach($mydata2->layer_obj as &$mydata3){
if($mydata3->obj == "ipcam"){
$mydata3->indirizzo_locale->ip = 'you changed the ip';
}
}
}
}
var_dump($app);
如果需要对正在迭代的对象进行更改,则需要使用
&
符号通过引用访问成员:
foreach($app->ambient as &$mydata){
foreach($mydata->layer as &$mydata2){
foreach($mydata2->layer_obj as &$mydata3){
if($mydata3->obj == "ipcam"){
$mydata3->indirizzo_locale->ip = 'you changed the ip';
}
}
}
}
var_dump($app);
试试这个:
$app = json_decode($dati);
foreach($app->ambient as &$mydata){
foreach($mydata->layer as &$mydata2){
foreach($mydata2->layer_obj as &$mydata3){
if($mydata3->obj == "ipcam"){
}
}
}
}
这些变量是通过引用调用的,这意味着在编辑$mydata3之类的变量时,还可以修改$app
否则,您只能更改$app的一小部分副本,而该副本将不属于$app的一部分。请尝试以下操作:
$app = json_decode($dati);
foreach($app->ambient as &$mydata){
foreach($mydata->layer as &$mydata2){
foreach($mydata2->layer_obj as &$mydata3){
if($mydata3->obj == "ipcam"){
}
}
}
}
这些变量是通过引用调用的,这意味着在编辑$mydata3之类的变量时,还可以修改$app
否则,您只更改$app的一小部分副本,而这部分副本将不属于$app。当使用json_解码(json_编码的_对象)时,它返回对象
若要在数组中获得结果,请在json_decode()函数中传递第二个参数“true”
如下所示:json_解码(json_编码的_对象,true) 当使用json_解码(json_编码的_对象)时,它返回object
若要在数组中获得结果,请在json_decode()函数中传递第二个参数“true”
如下所示:json_解码(json_编码的_对象,true) json_解码。。。更改数组/对象。。然后再次对其进行编码?您是如何尝试更改属性的?在foreach中通过引用传递属性,并将其设置为
$mydata3->obj->property='new'代码>json_解码。。。更改数组/对象。。然后再次对其进行编码?您是如何尝试更改属性的?在foreach中通过引用传递属性,并将其设置为$mydata3->obj->property='new'代码>我已经更新了问题。。我应该能够修改(例如)indirizzo_语言环境->ip@WhiteLine然后更改该属性-我更新了illustrateok的答案问题是当我返回新的json更改时。我返回了$dati,而不是json_encode($app),谢谢。我已经更新了这个问题。。我应该能够修改(例如)indirizzo_语言环境->ip@WhiteLine然后更改该属性-我更新了illustrateok的答案问题是当我返回新的json更改时。我返回了$dati而不是json_encode($app),谢谢