我从我的Android应用程序发送一个JsonArray,如下所示:

   final JSONArray data = new JSONArray();

    try{
        for(int i = 0; i<contactsList.size(); i++){
            JSONObject jobj = new JSONObject();
            ObjectContacts ob = contactsList.get(i);
            jobj.put("contactid", ob.getContact_id());
            jobj.put("mobile", ob.getNumber());
            data.put(jobj);
        }

    }


还有我的服务器收到的结果数组。

[
    {"contactid":"3","mobile":"(545) 454-5445"},
    {"contactid":"1","mobile":"(880) 939-5212"},
    {"contactid":"2","mobile":"822895456165"}
]


我需要从此数组中获取手机号码并执行Db操作以查看此手机号码是否存在。如何访问每个手机并执行查询?该查询将包括查找移动电话号码的存在,如果为真,它将获取该移动电话号码的名称,最后以JSONArray格式将数组返回给移动电话应用程序,该数组将包含联系人ID,移动电话,状态(是或否),名称。

时间不会成为问题,但有时阵列可能包含300-400个手机号码,具体取决于用户的联系方式。

更新资料

这是我实施的新的Php代码:

$app->post('/getcontacts', function () use ($app) {

//Verifying the required parameters
verifyRequiredParams(array('data'));

//Creating a response array
$response = array();


//reading post parameters
$data = $app->request->post('data');

$data_array = json_decode($data);


foreach ( $data_array as $obj ) {

 $res = array();
   $db = new DbOperation();
   $r = $db->checkContactExist($obj->mobile);
   if($r){
      $res["contactid"] = $obj->contactid;
      $res["mobile"] = $obj->mobile;
      $res["name"] = $obj->name;
      $res["status"] = 'yes';
      $res["image_small"] = $db->getImageSmall($obj->mobile);
   } else {
      $res["contactid"] = $obj->contactid;
      $res["mobile"] = $obj->mobile;
      $res["name"] = $obj->name;
      $res["status"] = 'no';
      $res["image_small"] = '';
   }


}

$response["error"] = false;
$response["message"] = json_encode($res);
echoResponse(201, $response);


});

我从服务器得到的响应:

{"contactid":"3","mobile":"(943) 101-9713","status":"no","image_small":""}


虽然应该有三个联系人,但只能读取一个。

如果我只是通过echo将传入的数据发送回应用程序以检查是否所有联系人都来了,那么它可以正常工作。也许在循环中,我仅添加了一个联系人的详细信息。

第二次更新

通过以下方法解决了该问题:

$final_res = array();


在foreach循环中

$final_res[] = $res;


因此发送回:

json_encode($final_res);

最佳答案

在字符串上使用json_decode()后,该字符串将转换为PHP对象数组。

这就是您的处理方式

<?php
$json_string = '[
    {"contactid":"3","mobile":"(545) 454-5445"},
    {"contactid":"1","mobile":"(880) 939-5212"},
    {"contactid":"2","mobile":"822895456165"}
]';

$json_array = json_decode($json_string);

foreach ( $json_array as $obj ) {
   echo $obj->contactid . ' - ' . $obj->mobile . PHP_EOL;
}


结果:

3 - (545) 454-5445
1 - (880) 939-5212
2 - 822895456165



  您应该能够做到这一点,并围绕此简单代码添加任何数据库访问权限

08-04 09:49