'2015-2016-2', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '學雷鋒做好事', 'cname' => '社會活動模組', 'period' => '16', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '會計從業資格證', 'cname' => '科技創新模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-1', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '教師資格證', 'cname' => '科技創新模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530111', 'stu_name' => '雷雨', 'stu_major' => '13視傳1班', 'depart_name' => '設計學院', 'project_name' => '美術學', 'cname' => '文體藝術模組', 'period' => '15', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530108', 'stu_name' => '周勵', 'stu_major' => '13產設1班', 'depart_name' => '設計學院', 'project_name' => 'DOM編程藝術', 'cname' => '科技創新模組', 'period' => '0', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530116', 'stu_name' => '高顏', 'stu_major' => '13陶藝2班', 'depart_name' => '陶美學院', 'project_name' => '音樂', 'cname' => '文體藝術模組', 'period' => '0', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530110', 'stu_name' => '程風', 'stu_major' => '13信管1班', 'depart_name' => '資訊學院', 'project_name' => 'JavaScript進階程式設計', 'cname' => '思想道德模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530112', 'stu_name' => '蘇環', 'stu_major' => '13公事1班', 'depart_name' => '人文學院', 'project_name' => '音樂', 'cname' => '文體藝術模組', 'period' => '0', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '美術學', 'cname' => '文體藝術模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-1', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => 'DOM編程藝術', 'cname' => '科技創新模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-1', 'stu_id' => '201210530108', 'stu_name' => '周勵', 'stu_major' => '13產設1班', 'depart_name' => '設計學院', 'project_name' => '美術學', 'cname' => '文體藝術模組', 'period' => '12', 'credit' => '0' ),); $tmp = array(); foreach($arr as $v) { if(!isset($tmp[$v['stu_id']])){ $tmp[$v['stu_id']] = $v; }else { $tmp[$v['stu_id']]['period'] += $v['period']; } } echo "
"; // 二維數組 print_r(array_values($tmp));?>
$arr是一個二維數組,數組裡有相同的stu_id(學生學號),根據stu_id(學生學號)的period(學時),計算總的period(學時),我的實現方案是這樣的。
$tmp = array(); foreach($arr as $v) { if(!isset($tmp[$v['stu_id']])){ $tmp[$v['stu_id']] = $v; }else { $tmp[$v['stu_id']]['period'] += $v['period']; } } echo "
"; // 二維數組 print_r(array_values($tmp));
但是,這隻是實現了period(學時)相加。
我還需要加限制條件計算出數組和每個學生的總學分(credit),就是根據cname(模組名稱),某個學生的每個模組(共四個模組,分別是思想道德模組、科技創新模組、文體藝術模組、社會活動模組)都需要大於等於16(四個模組同時都滿足大於等於16),則這個學生的總學分為6.否則為0。
不知道怎麼實現,特請教各位大神,在此先謝謝各位解答了。
回複內容:
'2015-2016-2', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '學雷鋒做好事', 'cname' => '社會活動模組', 'period' => '16', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '會計從業資格證', 'cname' => '科技創新模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-1', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '教師資格證', 'cname' => '科技創新模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530111', 'stu_name' => '雷雨', 'stu_major' => '13視傳1班', 'depart_name' => '設計學院', 'project_name' => '美術學', 'cname' => '文體藝術模組', 'period' => '15', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530108', 'stu_name' => '周勵', 'stu_major' => '13產設1班', 'depart_name' => '設計學院', 'project_name' => 'DOM編程藝術', 'cname' => '科技創新模組', 'period' => '0', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530116', 'stu_name' => '高顏', 'stu_major' => '13陶藝2班', 'depart_name' => '陶美學院', 'project_name' => '音樂', 'cname' => '文體藝術模組', 'period' => '0', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530110', 'stu_name' => '程風', 'stu_major' => '13信管1班', 'depart_name' => '資訊學院', 'project_name' => 'JavaScript進階程式設計', 'cname' => '思想道德模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530112', 'stu_name' => '蘇環', 'stu_major' => '13公事1班', 'depart_name' => '人文學院', 'project_name' => '音樂', 'cname' => '文體藝術模組', 'period' => '0', 'credit' => '0' ), array ( 'term' => '2015-2016-2', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => '美術學', 'cname' => '文體藝術模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-1', 'stu_id' => '201210530109', 'stu_name' => '羅成', 'stu_major' => '12熱工1班', 'depart_name' => '材料學院', 'project_name' => 'DOM編程藝術', 'cname' => '科技創新模組', 'period' => '12', 'credit' => '0' ), array ( 'term' => '2015-2016-1', 'stu_id' => '201210530108', 'stu_name' => '周勵', 'stu_major' => '13產設1班', 'depart_name' => '設計學院', 'project_name' => '美術學', 'cname' => '文體藝術模組', 'period' => '12', 'credit' => '0' ),); $tmp = array(); foreach($arr as $v) { if(!isset($tmp[$v['stu_id']])){ $tmp[$v['stu_id']] = $v; }else { $tmp[$v['stu_id']]['period'] += $v['period']; } } echo "
"; // 二維數組 print_r(array_values($tmp));?>
$arr是一個二維數組,數組裡有相同的stu_id(學生學號),根據stu_id(學生學號)的period(學時),計算總的period(學時),我的實現方案是這樣的。
$tmp = array(); foreach($arr as $v) { if(!isset($tmp[$v['stu_id']])){ $tmp[$v['stu_id']] = $v; }else { $tmp[$v['stu_id']]['period'] += $v['period']; } } echo "
"; // 二維數組 print_r(array_values($tmp));
但是,這隻是實現了period(學時)相加。
我還需要加限制條件計算出數組和每個學生的總學分(credit),就是根據cname(模組名稱),某個學生的每個模組(共四個模組,分別是思想道德模組、科技創新模組、文體藝術模組、社會活動模組)都需要大於等於16(四個模組同時都滿足大於等於16),則這個學生的總學分為6.否則為0。
不知道怎麼實現,特請教各位大神,在此先謝謝各位解答了。
$res = array(); foreach($arr as $key => $value){ if(!array_key_exists($value['stu_id'],$res)){ $res[$value['stu_id']][$value['cname']] = $value['period']; }else{ if(array_key_exists($value['cname'],$res[$value['stu_id']])){ $res[$value['stu_id']][$value['cname']] +=$value['period']; }else{ $res[$value['stu_id']][$value['cname']] = $value['period']; } } } $tmp = array(); foreach($arr as $v) { if(!isset($tmp[$v['stu_id']])){ $tmp[$v['stu_id']] = $v; }else { $tmp[$v['stu_id']]['period'] += $v['period']; } } $result = array(); foreach ($res as $key => $value) { $result[$key]['total_period'] = array_sum($value); foreach($value as $key1 => $value1){ if($value1<16){ $result[$key]['total_credit']=0; break; } } } $lastData = array(); foreach ($tmp as $key => $value) { $lastData[$key]['term'] = $value['term']; $lastData[$key]['stu_id'] = $value['stu_id']; $lastData[$key]['stu_name'] = $value['stu_name']; $lastData[$key]["stu_major"] = $value['stu_major']; $lastData[$key]["depart_name"] = $value['depart_name']; } foreach ($result as $key => $value) { $lastData[$key]["total_period"] = $value['total_period']; $lastData[$key]["total_credit"] = $value['total_credit']; } $theLastData = array_values($lastData); echo "
"; print_r($theLastData); exit;
你的資料怎麼來的 是從資料庫中讀取的嗎? 如果是 那麼你的這些問題直接查詢就出來了, 不需要用php邏輯處理~ 如果不是 那麼逐條把資料存到資料庫中 再查詢得到想要的結果