Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP未正确迭代嵌套的JSON_Php_Android_Json - Fatal编程技术网

PHP未正确迭代嵌套的JSON

PHP未正确迭代嵌套的JSON,php,android,json,Php,Android,Json,我试图循环遍历一个JSON对象(DATA),该对象包含三个嵌套的JSON对象(NEWUSERS,NEWUSERDATA,NEWRELATIONS),使用切换函数为MySQL插入选择合适的函数。当我循环键时,开关中的每个函数都被调用一次,但它们似乎都只接收NEWRELATIONS对象。因此,除了insertnewestrelations之外,函数失败,该函数用于接收NEWRELATIONS对象。我想答案一定是直截了当的,但是有人能想到为什么要重用JSON对象吗 读取和迭代JSON $json=js

我试图循环遍历一个JSON对象
(DATA)
,该对象包含三个嵌套的JSON对象(
NEWUSERS
NEWUSERDATA
NEWRELATIONS
),使用切换函数为MySQL插入选择合适的函数。当我循环键时,开关中的每个函数都被调用一次,但它们似乎都只接收
NEWRELATIONS
对象。因此,除了
insertnewestrelations
之外,函数失败,该函数用于接收
NEWRELATIONS
对象。我想答案一定是直截了当的,但是有人能想到为什么要重用JSON对象吗

读取和迭代JSON

$json=json_decode($_SERVER['HTTP_JSON'],true);
$data=$json['DATA'];

foreach($data as $key=>$json_obj){
    $result=null;
    $result=$db->insertNewSwitch($key,$json_obj,$last_sync);

    $response[$key.":errors"]=$result['errors'];
    $response[$key.":successes"]=$result['successes'];

}
开关功能

public function insertNewSwitch($key,$json_obj,$last_sync){
    $result;
    if($key="NEWUSERS"){
        $result=$this->insertNewTestUsers($json_obj,$last_sync,$key);
    }

    if($key="NEWUSERDATA"){
        $result=$this->insertNewTestUserdata($json_obj,$last_sync,$key);
    }

    if($key="NEWRELATIONS"){
        $result=$this->insertNewTestRelations($json_obj,$last_sync,$key);
    }


    return $result;
}

您使用的是
=
而不是
=
。这很可能是你的问题。
由于您正在分配值,因此每次都将计算为true,因此将输入每条语句。

您使用的是
=
而不是
=
。这很可能是你的问题。
由于您正在分配值,因此每次的计算结果都将为true,因此将输入每条语句。

尝试在逻辑运算符中为开关使用else,也可以使用double equals进行比较

public function insertNewSwitch($key,$json_obj,$last_sync){
    $result;
    if($key=="NEWUSERS"){
        $result=$this->insertNewTestUsers($json_obj,$last_sync,$key);
    }

     else if($key=="NEWUSERDATA"){
        $result=$this->insertNewTestUserdata($json_obj,$last_sync,$key);
    }

    else if($key=="NEWRELATIONS"){
        $result=$this->insertNewTestRelations($json_obj,$last_sync,$key);
    }


    return $result;
}

尝试在逻辑运算符中为交换机使用else,并使用double equals进行比较

public function insertNewSwitch($key,$json_obj,$last_sync){
    $result;
    if($key=="NEWUSERS"){
        $result=$this->insertNewTestUsers($json_obj,$last_sync,$key);
    }

     else if($key=="NEWUSERDATA"){
        $result=$this->insertNewTestUserdata($json_obj,$last_sync,$key);
    }

    else if($key=="NEWRELATIONS"){
        $result=$this->insertNewTestRelations($json_obj,$last_sync,$key);
    }


    return $result;
}

一个问题是if语句分配值而不是比较值:
if($key=“NEWUSERS”){
应该是
if($key==“NEWUSERS”){
一个问题是if语句分配值而不是比较值:
if($key=“NEWUSERS”){
应该是
if($key==“NEWUSERS”){
啊,毕竟是盯着我的脸看。谢谢你在我发疯的时候帮助我。啊,毕竟是盯着我的脸看。谢谢你在我发疯的时候帮助我。