代码之家  ›  专栏  ›  技术社区  ›  Dipak

删除从MySQL生成的重复值

  •  1
  • Dipak  · 技术社区  · 6 年前

    两个数组: 费用 数量 ,已形成如下基础 mysql join子句 和表格结构。

    阵列费用

    Array
    (
        [0] => Annual Fee-Disability Scholarship
        [1] => Annual Fee-First rank Scholarship
        [2] => Monthly Fee-First rank Scholarship
    )
    

    数组数量

    Array
    (
        [0] => 1000-20
        [1] => 1000-10
        [2] => 560-5
    )
    

    阵列费用 包含费用类别 分配给每个类别的奖学金

    数组数量 包含费率 每个费用类别中分配的奖学金百分比。

    我需要删除费用类别,如果已经回音了,那就是金额。

    通常,使用以下PHP代码:

    $cat = array('Annual Fee-Disability Scholarship','Annual Fee-First rank Scholarship','Monthly Fee-First rank Scholarship');
    $amount = array('1000-20','1000-10','560-5');
    foreach (array_combine($cat, $amount) as $cat => $amount){
        $cat_ry = explode('-', $cat);
        $amount_ry = explode('-', $amount);
    
        $fee_cat = $cat_ry[0]; 
        $fee = $amount_ry[0];
        $sch_cat = $cat_ry[1];
        $sch = $amount_ry[1];
    
        echo "
            <tr>
                <td>$fee_cat</td>
                <td>$fee</td>
            </tr>
            <tr>
                <td>$sch_cat</td>
                <td>$sch</td>
            </tr>";
    }
    

    下表格式将被回送。

    PHP Fiddle - complete code and result

    enter image description here

    这里的年费类别是重复的,因为有两个奖学金与此费用类别相关联。

    因此,我的要求是删除重复的费用类别及其相关金额。 所需输出

    enter image description here

    所以我试着 :如果已经回送,则不回送费用类别

    $fee_cat = "";
    //code
    //...
    if($cat_ry[0] != $fee_cat){
        $fee_cat = $cat_ry[0];
        //code
        //...
    }
    

    但是在这里,重复收费的类别是另一种奖学金 一等奖学金 也被删除

    PHP Fiddle - complete code and result

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   kuromoka    6 年前

    通过分离回波输出可以得到预期的结果。
    PHP小提琴: https://wtools.io/php-sandbox/pP

    $cat = array('Annual Fee-Disability Scholarship','Annual Fee-First rank Scholarship','Monthly Fee-First rank Scholarship');
    $amount = array('1000-20','1000-10','560-5');
    
    $outputed_fee_cat = [];
    foreach (array_combine($cat, $amount) as $cat => $amount){
        $cat_ry = explode('-', $cat);
        $amount_ry = explode('-', $amount);
    
        $fee = $amount_ry[0];
        $sch_cat = $cat_ry[1];
        $sch = $amount_ry[1];
        $fee_cat = $cat_ry[0];
        if (!in_array($fee_cat, $outputed_fee_cat)) {
            $outputed_fee_cat[] = $fee_cat;
    
            echo "
            <tr>
                <td class='bold'>$fee_cat</td>
                <td>$fee</td>
            </tr>";
        }
            echo "
            <tr>
                <td>$sch_cat</td>
                <td>$sch</td>
            </tr>";
    }