0

我正在尝试遍历(DATA)包含三个嵌套 JSON 对象(、、、NEWUSERS)的 JSON 对象NEWUSERDATANEWRELATIONS使用 switch 函数为 MySQL 插入选择适当的函数。当我遍历按键时,开关中的每个功能都被调用一次,但它们似乎都只接收到NEWRELATIONS对象。因此,函数会失败,除了insertNewTestRelations用于接收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;
}
4

2 回答 2

3

尝试在逻辑运算符中使用 else 进行切换,并使用双等号进行比较

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;
}
于 2013-08-13T23:10:14.740 回答
2

您正在使用=not ==。这很可能是您的问题。因为您正在分配值,所以每次都会评估为 true,因此将输入每个语句。

于 2013-08-13T23:09:46.227 回答