shubham sharma shubham sharma - 6 months ago 18
JSON Question

Type conversion from phparray to jsonarray and sending back in response

i am creating webservice in which i had made a function which is providing me multidimensional array in php but to sending these data to android we have to convert it into response of json after tried lot now i got various problem

Now these function which is providing php array name is 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;
}


Data which is generated by these function

{
"": {
"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"
}
}


Now i had created one more function which is catching $absentarray with variable of $resultarray.and i need code in these function
code is

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

Answer

SOLVED: The problem had solved by just applying the logic of foreach loop and in if($result_array) selection .The code is

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

    }