Vergelijken binnen twee Array's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis

Dennis

14/02/2006 11:08:00
Quote Anchor link
Ik wil getallen binnen twee arrays met elkaar vergelijken en deze een kleurtje geven wanneer ze:

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?

if($row['RenteNHG'] < $rowb['RenteNHG'])
{

$rentekleurNHG='<font color=green>';
}

else if($row['RenteNHG'] > $rowb['RenteNHG'])
{

$rentekleurNHG='<font color=red>';
}

else
{
$rentekleurNHG='';
}


?>


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.
 
PHP hulp

PHP hulp

24/12/2024 19:20:19
 
Willem vp

Willem vp

14/02/2006 12:07:00
Quote Anchor link
Kun je ook de code laten zien waarin je de tabel aanmaakt?
 
Dennis

Dennis

14/02/2006 12:59:00
Quote Anchor link
echo"
<tr>
<td>$RenteNHG</td>
<td>$Rente60</td>
<td>$Rente75</td>
<td>$Rente90</td>
<td>$Rente100</td>
<td>$Rente110</td>
<td>$Rente125</td>
</tr>";
 
Bart van der veen

bart van der veen

14/02/2006 13:10:00
Quote Anchor link
je moet een for loopje maken met:

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()
 
Willem vp

Willem vp

14/02/2006 13:24:00
Quote Anchor link
Ik ga ervan uit dat dat loopje al bestaat, maar niet hier is gepost. Anders is het lastig om een tabel te maken ;-)

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 ;-) )
 
Willem vp

Willem vp

14/02/2006 13:27:00
Quote Anchor link
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.
 
Dennis

Dennis

14/02/2006 13:52:00
Quote Anchor link
mijn code is nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?

if($row['RenteNHG'] < $rowb['RenteNHG'])
{

$rentekleurNHG='<font color=green>';
}

else if($row['RenteNHG'] > $rowb['RenteNHG'])
{

$rentekleurNHG='<font color=red>';
}

else
{
$rentekleurNHG='';
}


?>

(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
 
Dennis

Dennis

14/02/2006 14:18:00
Quote Anchor link
iemand?
 
Mitch X

Mitch X

14/02/2006 14:28:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
    # ...

}
?>

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
 
Dennis

Dennis

14/02/2006 15:11:00
Quote Anchor link
en dan?

hoe krijg je de kleinere waarde dan groen bijvoorbeeld?
 
Dennis

Dennis

14/02/2006 15:42:00
Quote Anchor link
het moet zijn:

$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
 
Mitch X

Mitch X

14/02/2006 16:19:00
Quote Anchor link
Dennis:
het moet zijn:
$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?
 
Dennis

Dennis

14/02/2006 16:22:00
Quote Anchor link
met die if wil dus niet lukken.
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...
 
Mitch X

Mitch X

14/02/2006 17:03:00
Quote Anchor link
Je hoeft niet zo irritant opdringerig te doen.
Als je meer info hebt kun je je bericht wijzigen Afbeelding.

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 :)
 
Dennis

Dennis

14/02/2006 17:06:00
Quote Anchor link
maar hij vergelijkt toch niet getal voor getal?

hij doet geloof ik 4x hetzelfde, maar niet eerst getal1, dan getal 2 etc...
 
Mitch X

Mitch X

14/02/2006 17:12:00
Quote Anchor link
En daar is nou net die loop voor zoals je hebt kunnen lezen ...
 
Dennis

Dennis

14/02/2006 17:15:00
Quote Anchor link
ja dat snap ik ;)

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...
 
Mitch X

Mitch X

14/02/2006 17:36:00
Quote Anchor link
Checks op een gelijk aantal elementen ed mag je er zelf in prutser.
Dit is mijn resultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
}

?>
 
Dennis

Dennis

23/02/2006 10:13:00
Quote Anchor link
Hartelijk dank :)
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?
 
Jan Koehoorn

Jan Koehoorn

23/02/2006 10:25:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
// arrays maken
    $array1 = explode (',', $a);
    $array2 = explode (',', $b);
?>


edit: foutje verwijderd
Gewijzigd op 23/02/2006 10:25:00 door Jan Koehoorn
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.