键入从phparray到jsonaray的转换,并发回响应


Type conversion from phparray to jsonarray and sending back in response

我正在创建Web服务,我在其中创建了一个函数,该函数在php中为我提供多维数组,但要将这些数据发送到android,我们必须在尝试了很多之后将其转换为json的响应,现在我遇到了各种问题

现在,这些提供php数组名称的函数是getdefendstudent:

public function getabsendstudents($lecture1, $lecture2) {
    function bool2str($bool) {
        if ($bool === false)
            return 'FALSE';
        else
            return 'TRUE';
    }
    function compareObjects(&$o1, &$o2) {
        echo 'o1 == o2 : ' . bool2str($o1 == $o2) . "'n";
    }
    ///queries
    $ss  = "SELECT * FROM attendence WHERE lecturenumber = $lecture1";
    $ss2 = "SELECT * FROM attendence WHERE lecturenumber = $lecture2";   
    $result = mysql_query($ss);
    $result2 = mysql_query($ss2);
    // fetching number of rows
    $no_of_rows  = 0;
    $no_of_rows2 = 0;   
    $no_of_rows  = mysql_num_rows($result);
    $no_of_rows2 = mysql_num_rows($result2);
    ///// array objects
    $testforstudent  = array();
    $testforstudent2 = array();
    $absentstudent   = array();
    $presentstudent  = array();
    //// variable declaration
    $len=0;
    $result_array_for_lec1[] = array();
    $result_array_for_lec2[] = array(); 
    ///fetching whole students in arrays
    if ($no_of_rows > 0) {
        $acount = 0;
        $pcout = 0;
        while ($row = mysql_fetch_array($result)) {
            $testforstudent[] = $row;
            $acount = $acount + 1;
        }
    }
    if ($no_of_rows > 0) {
        $pcount = 0;
        while ($row2 = mysql_fetch_array($result2)) {
            $testforstudent2[] = $row2;
            $pcount = $pcount + 1;          
        }
    }
    /// here we are comparing in status of student
    // otherwise student had bunked classes          
    if ($no_of_rows > $no_of_rows2)
        $len = $no_of_rows2;
    else
        $len = $no_of_rows;
    global $p;
    global $a;
    for ($i = 0; $i < $len; $i++) {
        $bo = strtolower($testforstudent[$i]["status"]) == strtolower($testforstudent2[$i]["status"]);
        if ($bo) {
            ////present student     
        }
        else {
            $absentstudent[$a] = $testforstudent2[$i];
            $a++;
        }
    }
    echo json_encode($absentstudent);
    return $absentstudent;
}

由这些功能生成的数据

{
    "": {
            "0": "17",
            "id": "17",
            "1": "'"12:30'"",
            "starttime": "'"12:30'"",
            "2": "9",
            "classid": "9",
            "3": "'"2:30'"",
            "endtime": "'"2:30'"",
            "4": "cs602",
            "lecturecode": "cs602",
            "5": "1102",
            "teacherid": "1102",
            "6": "0827cs131235",
            "enrollmentnumber": "0827cs131235",
            "7": "'"P'"",
            "status": "'"P'"",
            "8": "'"24/04/2016'"",
            "dateof": "'"24/04/2016'"",
            "9": "'"sunday'"",
            "dayof": "'"sunday'"",
            "10": "2",
            "lecturenumber": "2"
    },
    "1": {
            "0": "18",
            "id": "18",
            "1": "'"12:30'"",
            "starttime": "'"12:30'"",
            "2": "9",
            "classid": "9",
            "3": "'"2:30'"",
            "endtime": "'"2:30'"",
            "4": "cs602",
            "lecturecode": "cs602",
            "5": "1102",
            "teacherid": "1102",
            "6": "0827cs131236",
            "enrollmentnumber": "0827cs131236",
            "7": "'"P'"",
            "status": "'"P'"",
            "8": "'"24/04/2016'"",
            "dateof": "'"24/04/2016'"",
            "9": "'"sunday'"",
            "dayof": "'"sunday'"",
            "10": "2",
            "lecturenumber": "2"
    }
}

现在我又创建了一个函数,它捕获变量为$resultarray的$abstrarray。我需要这些函数中的代码代码是

$result_array = $db->getabsendstudents($lecture1, $lecture2);
if ($result_array) {
    $count = 0;
    // result array is catching absentstudent array
    $response["success"] = 1;
    $response["user"][$count]["classid"] = $result_array[$count]["classid"];
    $count = $count + 1;
}
else {
    // user failed to store
    $response["error"] = 1;
    $response["error_msg"] = "JSON Error occured in Registartion";
    echo json_encode($response);
}

已解决:只需应用foreach循环的逻辑和if($result_array)选择即可解决问题。代码为

  if ($result_array) {
                $count=0;       
        foreach ($result_array as $value)
            {
                // user stored successfully
            $response["success"] = 1;
            $response["user"][$count]["classid"] = $value["classid"];
            $response["user"][$count]["enrollmentnumber"]= $value["enrollmentnumber"];
            $response["user"][$count]["teacherid"]=$value["teacherid"];

            $count=$count+1;
            }
    echo json_encode($response);
    }