php 二維數組根據相同id求和,並且限制條件

來源:互聯網
上載者:User
關鍵字 php
 '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邏輯處理~ 如果不是 那麼逐條把資料存到資料庫中 再查詢得到想要的結果

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.