php数据还原

源数据:
{ "openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ", "courseID": "EC A7 D5 95", "courseName": "tiandizhijian", "studentCount": "2", "parts": [{ "actions": [{ "typeID": "30" }, { "typeID": "30" } ], "singleTime": "30", "restTime": "60" }, { "actions": [{ "typeID": "30" }, { "typeID": "30" } ], "singleTime": "30", "restTime": "60" } ] }

 存入数据库示意 

uniqueCode为每节课的编码(以区分courseID重复的情景,表示唯一性),actionsIndex表示

{
"actions": [...],
"singleTime": "30",
"restTime": "60"
}
这段数据在parts中的下标,为取数据时辨别typeID的分组作个标识

select数据之后数据为:

[{
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "E2EFE01E18F90861C667CED170552FC3",
	"courseID": "51 5D 49 F3",
	"courseName": "u5927u660e",
	"studentCount": "2",
	"actionsIndex": "0",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "1"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "E2EFE01E18F90861C667CED170552FC3",
	"courseID": "51 5D 49 F3",
	"courseName": "u5927u660e",
	"studentCount": "2",
	"actionsIndex": "0",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "3"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "E2EFE01E18F90861C667CED170552FC3",
	"courseID": "51 5D 49 F3",
	"courseName": "u5927u660e",
	"studentCount": "2",
	"actionsIndex": "1",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "5"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "E2EFE01E18F90861C667CED170552FC3",
	"courseID": "51 5D 49 F3",
	"courseName": "u5927u660e",
	"studentCount": "2",
	"actionsIndex": "1",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "7"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "8875ED583EFCB51A3603FE22309AA57F",
	"courseID": "66 6A CC 98",
	"courseName": "u4e1cu6b27u4e1c",
	"studentCount": "6",
	"actionsIndex": "0",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "1"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "8875ED583EFCB51A3603FE22309AA57F",
	"courseID": "66 6A CC 98",
	"courseName": "u4e1cu6b27u4e1c",
	"studentCount": "6",
	"actionsIndex": "0",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "3"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "8875ED583EFCB51A3603FE22309AA57F",
	"courseID": "66 6A CC 98",
	"courseName": "u4e1cu6b27u4e1c",
	"studentCount": "6",
	"actionsIndex": "0",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "5"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "8875ED583EFCB51A3603FE22309AA57F",
	"courseID": "66 6A CC 98",
	"courseName": "u4e1cu6b27u4e1c",
	"studentCount": "6",
	"actionsIndex": "1",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "7"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "8875ED583EFCB51A3603FE22309AA57F",
	"courseID": "66 6A CC 98",
	"courseName": "u4e1cu6b27u4e1c",
	"studentCount": "6",
	"actionsIndex": "1",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "2"
}, {
	"openID": "ouGzJv7G23rRCC0Bt70e1JLM70yQ",
	"uniqueCode": "8875ED583EFCB51A3603FE22309AA57F",
	"courseID": "66 6A CC 98",
	"courseName": "u4e1cu6b27u4e1c",
	"studentCount": "6",
	"actionsIndex": "1",
	"singleTime": "30",
	"restTime": "60",
	"typeID": "4"
}]

  

将这些数据变为源数据的格式返回?

$arr = array();
		foreach ($res as $key) {
			# code...
			if(!array_key_exists($key->courseid ,$arr)){
				$arr[$key->courseid] = array();
				$arr[$key->courseid]['actions'] = array();
			}
			$arr[$key->courseid]['courseID'] = $key->courseid;
			$arr[$key->courseid]['courseName'] = $key->courseName;
			$arr[$key->courseid]['usageCount'] = $key->usageCount;
			
			$a = [
				"typeID" => $key->typeID,
				"setCount" => $key->setCount,
				"countPerSet" => $key->countPerSet,
				"timeInterval" => $key->timeInterval,
			];
			array_push($arr[$key->courseid]['actions'], $a);
		}
		$res = array();
		foreach ($arr as $key => $value) {
			# code...
			array_push($res, $value);
		}
		$obj = new stdClass();
		$obj->lessons = $res;
          //$obj为返回数据

  

原文地址:https://www.cnblogs.com/nullman/p/10313476.html