我从数据库中获取数据。一切正常,但foreach循环得到重复的项目。我得到的团队名称是重复的。
照片:
我知道这是代码的错,因为它在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
)
)
)
答案 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