Ik zit dus met een vrij raar probleem en waar ik de fout echt niet kan uithalen.
Code is als volgt:
De bedoeling van dit stukje code is om een soort kruistabel met percentages weg te schrijven naar excel (via $worksheet1->write)
In de eerste geneste forlus wordt er voor iedere rij een totaal berekent, en daarna zal voor iedere cel (in iedere rij) de procentberekening (waarde/rijtotaal*100) worden uitgevoerd.
Ik moet ook kolomtotalen hebben (in percentages) en ik dacht simpelweg dezelfde code nog eens uit te voeren (2e geneste for), maar dan kolomsgewijs.
De waarde van iedere cel wordt in een 2-dimensionale array opgeslagen
Wat is nu het probleem :
In mijn 2e geneste for-lus wordt er maar in 1 kolom de juiste waarden getoond en de andere kolommen worden nul. Als ik mijn for-lus vanaf de 2e kolom laat starten, dan blijft kolom 1 leeg (logisch), kolom 2 is netjes ingevuld en kolom3 geeft nullen (wat dus niet klopt).
Bij het starten vanaf kolom 3 : 1 en 2 leeg, 3 goed ingevuld.
Ik heb ook getest of mijn geneste forlussen goed worden uitgevoerd en dit is ook zo, als ik rij en kolomnummer meegeef als waarde, dan zijn alle 3 de kolommen ingevuld.
Ik snap dus echt niet waar het probleem ligt : forlussen zijn goed en de data ook.
Hopelijk heeft er iemand enig idee, want dit is echt niet leuk.
Code is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| if($type=="percent"){ //berekenen van de juiste percentages + totalen for($r=12; $r<=$rij; $r++){ $totaal = 0; for($k=1; $k<=count($projname); $k++){ //totaal per rij berekenen $totaal = $totaal + $totalrow[$r][$k+1]; } for($k=1; $k<=count($projname); $k++){ //voor ieder element uit de rij, delen door rijtotaal*100 if($totalrow[$r][$k+1]>0){ $t[$r][$k] = ($totalrow[$r][$k+1]/$totaal)*100; $x = $x + $t[$r][$k]; //$worksheet1->write_number($r,$k+1,$t[$r][$k]); } } } for($k=1; $k<=count($projname); $k++){ $totalcol = 0; for($r=12; $r<=$rij; $r++){ //voor iedere kolom totaal berekenen $totalcol = $totalcol + $t[$r][$k]; $worksheet1->write_number($r, $k+1, $t[$r][$k]); //$worksheet1->write_string($r,$k+1,"rij:".$r." kolom:".$k); } $t = ($totalcol/$x)*100; $worksheet1->write_number($rij+1,$k+1,$totalcol); } |
De bedoeling van dit stukje code is om een soort kruistabel met percentages weg te schrijven naar excel (via $worksheet1->write)
In de eerste geneste forlus wordt er voor iedere rij een totaal berekent, en daarna zal voor iedere cel (in iedere rij) de procentberekening (waarde/rijtotaal*100) worden uitgevoerd.
Ik moet ook kolomtotalen hebben (in percentages) en ik dacht simpelweg dezelfde code nog eens uit te voeren (2e geneste for), maar dan kolomsgewijs.
De waarde van iedere cel wordt in een 2-dimensionale array opgeslagen
PHP:
en deze kan aangesproken worden in de 2e lus.1
| $t[$r][$k] |
Wat is nu het probleem :
In mijn 2e geneste for-lus wordt er maar in 1 kolom de juiste waarden getoond en de andere kolommen worden nul. Als ik mijn for-lus vanaf de 2e kolom laat starten, dan blijft kolom 1 leeg (logisch), kolom 2 is netjes ingevuld en kolom3 geeft nullen (wat dus niet klopt).
Bij het starten vanaf kolom 3 : 1 en 2 leeg, 3 goed ingevuld.
Ik heb ook getest of mijn geneste forlussen goed worden uitgevoerd en dit is ook zo, als ik rij en kolomnummer meegeef als waarde, dan zijn alle 3 de kolommen ingevuld.
Ik snap dus echt niet waar het probleem ligt : forlussen zijn goed en de data ook.
Hopelijk heeft er iemand enig idee, want dit is echt niet leuk.