我正在创建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);
}
答案 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);
}