键入从phparray到jsonarray的转换,并作为响应发回

时间:2016-05-06 12:12:54

标签: php arrays json

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

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

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的变量捕获$ absentarray。我需要这些函数中的代码 代码是

$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);
}

1 个答案:

答案 0 :(得分:0)

解决:问题已经通过应用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);

    }