Vergelijken binnen twee Array's
1) hoger zijn (rood)
2) lager zijn (groen)
3) gelijk zijn (zwart/geen kleur)
Ik ben zover gekomen dat ik twee complete arrays met elkaar kan vergelijken.
Code (php)
Nu maakt hij de héle kolom of groen, of rood, of zwart.
Voorbeeld:
$row['RenteNHG']
---------------
2,0
2,1
2,2
3,0
2,5
$rowb['RenteNHG']
-------------
2,5
2,6
2,7
2,5
2,5
In dit voorbeel zijn de eerste 3 getallen LAGER, 4e getal is HOGER en 5e getal is GELIJK
Wat ik wil is dat de eerste 3 getallen GROEN zijn, 4e getal ROOD, en 5e getal ZWART
Maar in dit voorbeeld zijn alle getallen GROEN.
Kun je ook de code laten zien waarin je de tabel aanmaakt?
<tr>
<td>$RenteNHG</td>
<td>$Rente60</td>
<td>$Rente75</td>
<td>$Rente90</td>
<td>$Rente100</td>
<td>$Rente110</td>
<td>$Rente125</td>
</tr>";
for(i=0;i<=$aantalgetallen;i++) { dan je if structuur }
wat je nu krijgt is dat hij de if structuur een x ($aantalgetallen)aantal keer doorloopt ipv 1 keer.
ps $aatal getallen kan eventueel met count()
Maar ik mis eigenlijk de $rentekleurNHG in het hele tabel-verhaal. Ik zou namelijk verwachten:
<td>$rentekleurNHG$RenteNHG$slashfonttag</td>
waarbij $slashfonttag is gedefinieerd als:
$slashfonttag = ($rentekleurNHG != '') ? '</font>' : '';
(oftewel: wat je opent, moet je ook weer sluiten ;-) )
Nóg mooier is het overigens om CSS te gebruiken, waarbij je werkt met <td class="groen"> of <td class="rood"> als de inhoud een kleurtje moet hebben.
Code (php)
(dit staat onder een while loop)
waar moet ik dat for- loopje plaatsen zodat ie elke rente een voor een afgaat? Want het wel niet echt lukken
iemand?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
# Twee arraytjes
$array1 = ( 1, 3, 10, 100 );
$array2 = ( 2, 1, 11, 100 );
# Loopje
for( $i = 0; $i < $aantal; $i++ )
{
# Ifje hier
# ...
}
?>
# Twee arraytjes
$array1 = ( 1, 3, 10, 100 );
$array2 = ( 2, 1, 11, 100 );
# Loopje
for( $i = 0; $i < $aantal; $i++ )
{
# Ifje hier
# ...
}
?>
Dat is het idee.
En PHP kent wel een elseif, aanelkaar dus.
Edit: Teipvout
Gewijzigd op 14/02/2006 14:28:00 door Mitch X
hoe krijg je de kleinere waarde dan groen bijvoorbeeld?
$array1 = array( 1, 3, 10, 100 );
$array2 = array( 2, 1, 11, 100 );
maar nu kan ik nog niet bijv die 1 groen maken, de 3 en 10 rood en 100 zwart laten
Gewijzigd op 14/02/2006 15:47:00 door Dennis
Dennis:
het moet zijn:
$array1 = array( 1, 3, 10, 100 );
$array2 = array( 2, 1, 11, 100 );
$array1 = array( 1, 3, 10, 100 );
$array2 = array( 2, 1, 11, 100 );
Je hebt helemaal gelijk, tis dan ook weer een tijdje geleden dat ik met PHP bezig was :$
Quote:
maar nu kan ik nog niet bijv die 1 groen maken, de 3 en 10 rood en 100 zwart laten
Door je ifje erin te proppen zoals het commentaar aangeeft?
Ik weet niet hoe ik de 1-2 moet vergelijken
en de 3-1, 10-11 en 100-100
dat was mijn beginvraag ook grotendeels...
Als je meer info hebt kun je je bericht wijzigen .
Verder is het gewoon vergelijken zoals je al in je voorbeeld aangaf.
Als getal1 is groter dan getal2
=> groen
Als getal2 is groter dan getal1
=> rood
Anders
=> Zwart
That's it :)
hij doet geloof ik 4x hetzelfde, maar niet eerst getal1, dan getal 2 etc...
En daar is nou net die loop voor zoals je hebt kunnen lezen ...
Maar met die loop krijg ik het nog niet voor elkaar, dat ie getal voor getal pakt.
Maar dat moet dus wel werken?
Dan zal ik het nog maar eens zo proberen...
Dit is mijn resultaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
# Twee test arrays
$array1 = array( 1, 2, 3, 4, 5 );
$array2 = array( 0, 2, 4, 4, 2 );
# Even tellen hoeveel elementen we hebben
$aantalElementen = count( $array1 );
# Loopje
for( $i = 0; $i < $aantalElementen; $i++ )
{
if( $array1[$i] > $array2[$i] )
echo '<span style="color: green">' . $array1[$i] . '</span>';
elseif( $array1[$i] < $array2[$i] )
echo '<span style="color: red">' . $array1[$i] . '</span>';
else
echo '<span style="color: black">' . $array1[$i] . '</span>';
}
?>
# Twee test arrays
$array1 = array( 1, 2, 3, 4, 5 );
$array2 = array( 0, 2, 4, 4, 2 );
# Even tellen hoeveel elementen we hebben
$aantalElementen = count( $array1 );
# Loopje
for( $i = 0; $i < $aantalElementen; $i++ )
{
if( $array1[$i] > $array2[$i] )
echo '<span style="color: green">' . $array1[$i] . '</span>';
elseif( $array1[$i] < $array2[$i] )
echo '<span style="color: red">' . $array1[$i] . '</span>';
else
echo '<span style="color: black">' . $array1[$i] . '</span>';
}
?>
Dit is het eerste werkend voorbeeld dat ik heb nu
Maar nu zit ik zelf met het probleem om mijn waardes in een array te zetten.
Ik gebruik $row[renteNHG] en $rowb[renteNHG]
Ik probeer ze zelf alsvolgt in een array te zetten:
$rNHG = $row[RenteNHG];
$rentes[] = "$rNHG";
$a = implode(", ", $rentes);
en
$rNHGb = $rowb[RenteNHG];
$rentesb[] = "$rNHGb";
$b = implode(", ", $rentesb);
om te testen heb ik:
echo"a=$a";
echo"b=$b";
Dit geeft als resultaat:
a=2.90, 2.80, 3.00, 3.10, 3.40, 3.60, 3.90, 4.00, 4.20, 4.30, 4.50, 4.60, 4.10, 4.50, 4.90, 5.40, 5.80, 6.20, 3.90
b=9.90, 0.90, 1.10, 1.40, 1.80, 2.00, 2.30, 2.50, 2.80, 2.90, 3.10, 3.30, 2.20, 2.60, 3.00, 3.50, 3.90, 6.30, 1.90
Nu wil ik dit dus in 2 arrays zetten. Dat doe ik als volgt:
$array1 = array($a);
$array2 = array($b);
Maar als ik nu bovenstaande code uitvoer, krijg ik wel:
2.90, 2.80, 3.00, 3.10, 3.40, 3.60, 3.90, 4.00, 4.20, 4.30, 4.50, 4.60, 4.10, 4.50, 4.90, 5.40, 5.80, 6.20, 3.90 (dus de waarden van array 1), maar alle getallen zijn ROOD (wat betekent dat array1>array2)
Maar ik heb express het eerste getal van array2 9.90 gemaakt, zodat het eerste getal van array1 GROEN zou moeten zijn. Maar dat is dus niet het geval....
Ik heb ook $aantalElementen ge-echoed, en die geeft 1 als waarde. Dus er gaat iets fout met de waardes in een array zetten. Als ik ze handmatig in de array zet:
dus:
$array1 = array(2.90, 2.80, 3.00, 3.10, 3.40, 3.60, 3.90, 4.00, 4.20, 4.30, 4.50, 4.60, 4.10, 4.50, 4.90, 5.40, 5.80, 6.20, 3.90
);
$array2 = array(9.90, 0.90, 1.10, 1.40, 1.80, 2.00, 2.30, 2.50, 2.80, 2.90, 3.10, 3.30, 2.20, 2.60, 3.00, 3.50, 3.90, 6.30, 1.90
);
dan klopt het wel, en is het eerste getal groen en is
$aantalElementen 19
Hoe kan ik mijn waarden in een array zetten zonder dat handmatig, zoals in het voorbeeld, te doen?