php foreach循环重复项

时间:2014-08-17 15:19:40

标签: php mysql foreach

我从数据库中获取数据。一切正常,但foreach循环得到重复的项目。我得到的团队名称是重复的。

照片:enter image description here

我知道这是代码的错,因为它在foreach循环中,但我不知道如何解决这个问题:

foreach($arrayTotals as $team=>$values){
        foreach($values as $v){
            echo "<tr class=\"" . $v['kaupunki_id'] . "\"><td>".$numerointi .".";
            echo "<td>" . $team;
            $sum1=0;
            $sum2=0;
            $numerointi ++;
        }

我的整个代码:

$arrayTotals = array();
    foreach ($db->query("SELECT pisteet_1, pisteet_2, nimi, team_id, pisteet.kaupunki_id FROM pisteet INNER JOIN joukkueet ON joukkueet.id=pisteet.team_id ORDER BY team_id ASC") as $joukkuenimi) {

         $arrayTotals[$joukkuenimi['nimi']][] = array('pisteet_1'=>$joukkuenimi['pisteet_1'],'pisteet_2'=>$joukkuenimi['pisteet_2'],'kaupunki_id'=>$joukkuenimi['kaupunki_id']);

    }
//var_dump($arrayTotals);
$numerointi =1;
echo "<table class=\"zebra\">";
foreach($arrayTotals as $team=>$values){
    foreach($values as $v){
        echo "<tr class=\"" . $v['kaupunki_id'] . "\"><td>".$numerointi .".";
        echo "<td>" . $team;
        $sum1=0;
        $sum2=0;
        $numerointi ++;
    }
    foreach($values as $v){
            echo "<td class=\"pisteet\">" . $v['pisteet_1'] . "/" . $v['pisteet_2'] . "</td>";
            $sum1 +=$v['pisteet_1'];
            $sum2 +=$v['pisteet_2'];
    }
    echo '<td class="summa">'.$sum1.'/'.$sum2."</td>";
    echo "</tr>";
}
echo '</table>';

如果我启用了我的数组:

echo "<pre>";
print_r($arrayTotals);

Array
(
    [Itis/hki] => Array
        (
            [0] => Array
                (
                    [pisteet_1] => 6
                    [pisteet_2] => 10
                    [kaupunki_id] => 1
                )

            [1] => Array
                (
                    [pisteet_1] => 3
                    [pisteet_2] => 10
                    [kaupunki_id] => 1
                )

        )

    [Harju/Jyväskylä] => Array
        (
            [0] => Array
                (
                    [pisteet_1] => 3
                    [pisteet_2] => 10
                    [kaupunki_id] => 5
                )

            [1] => Array
                (
                    [pisteet_1] => 4
                    [pisteet_2] => 10
                    [kaupunki_id] => 5
                )

        )

    [Jojot] => Array
        (
            [0] => Array
                (
                    [pisteet_1] => 6
                    [pisteet_2] => 10
                    [kaupunki_id] => 5
                )

            [1] => Array
                (
                    [pisteet_1] => 7
                    [pisteet_2] => 10
                    [kaupunki_id] => 5
                )

        )

)

3 个答案:

答案 0 :(得分:1)

尝试这样:

$db->query("SELECT pisteet_1, pisteet_2, nimi, team_id, pisteet.kaupunki_id FROM pisteet INNER JOIN joukkueet ON joukkueet.id=pisteet.team_id where pisteet_1 is not null or pisteet_1 !='' ORDER BY team_id ASC") 

注意:在where子句中,您可以添加您想要的条件,以获得适当的结果或添加多个条件,这些条件应为true以获得结果。 这将使用空值或空值来省略结果。

答案 1 :(得分:1)

你的第一个foreach()导致了这个问题,因为它在打印第二个foreach循环之前循环遍历两个子数组。尝试删除它,然后使用$v['kaupunki_id'] -

引用第一个$values[0]['kaupunki_id']
$numerointi =1;
echo "<table class=\"zebra\">";
foreach($arrayTotals as $team=>$values){
    echo "<tr class=\"" . $values[0]['kaupunki_id'] . "\"><td>".$numerointi .".";
    echo "<td>" . $team;
    $sum1=0;
    $sum2=0;
    $numerointi ++;

    foreach($values as $v){
            echo "<td class=\"pisteet\">" . $v['pisteet_1'] . "/" . $v['pisteet_2'] . "</td>";
            $sum1 +=$v['pisteet_1'];
            $sum2 +=$v['pisteet_2'];
    }
    echo '<td class="summa">'.$sum1.'/'.$sum2."</td>";
    echo "</tr>";
}
echo '</table>';

答案 2 :(得分:0)

尝试以下代码可以帮助您删除重复项。

function find_dup($p1, $p2){
   $n=0;
foreach($p1 as $key => $val){
if($val==$p2) $n++;
return $nb;
}

$ar = array(10,20,10,30,40,10);
echo find_dup($ar,10) // will output 3