php loop foreach
ik zit met het volgende probleem.
ik heb 2 array's aangemaakt
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$klasgenoten = array("Jan", "Piet", "Klaas", "Kees", "Karel", "Peter", "freek", "wim", "baas", "bham");
$emailadressen = array("[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]");
?>
$klasgenoten = array("Jan", "Piet", "Klaas", "Kees", "Karel", "Peter", "freek", "wim", "baas", "bham");
$emailadressen = array("[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]");
?>
nu moet ik ze weergeven in een tabel dit wilt me nog lukken
hier het stukje waar ik de array's opvraag:
Code (php)
Wat ik nu wil is dit:
het eerste stukje foreacht($klasgenoten as $namen)
..............
maar nu wil ik ook dat hij in dat stukje ook dit pakt
foreach($emailadressen as $mails)
want de bedoeling is dat ik ze in een tabel naast elkaar krijg.
en hoe ik het nu heb krijg ik twee apparte tabellen.
ik hoop dat jullie snappen wat ik bedoel
en ik hoop dat iemand mij kan helpen
P.S. ik heb het hele php boek al doorgebladerd.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$klasgenoten = array("Jan" => "[email protected]", "Piet" => "[email protected]", "Klaas" => "[email protected]", "Kees" => "[email protected]", "Karel" => "[email protected]", "Peter" => "[email protected]", "freek" => "[email protected]");
foreach ($klasgenoten as $naam => $email) {
echo '<table width="80" border="1"><tr><td>'.$naam.'</td></tr><tr><td>'.$email.'</td></tr></table><br />';
}
?>
$klasgenoten = array("Jan" => "[email protected]", "Piet" => "[email protected]", "Klaas" => "[email protected]", "Kees" => "[email protected]", "Karel" => "[email protected]", "Peter" => "[email protected]", "freek" => "[email protected]");
foreach ($klasgenoten as $naam => $email) {
echo '<table width="80" border="1"><tr><td>'.$naam.'</td></tr><tr><td>'.$email.'</td></tr></table><br />';
}
?>
Je zult de rest nog wel even moeten vullen.
Code (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
27
28
29
30
31
32
33
34
35
36
37
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
27
28
29
30
31
32
33
34
35
36
37
<?php
// defineer enter voor mooie html presentatie
define( 'ENTER', "\r\n" );
$klasgenoten = array("Jan", "Piet", "Klaas", "Kees", "Karel", "Peter", "freek", "wim", "baas", "bham");
$emailadressen = array("[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]");
print '<table border="1">'.ENTER;
// controleer of array's even lang zijn
if (count($klasgenoten) == count($emailadressen))
{
// doorloop code in de for loop voor het aantal klasgenoten
for ($i=0; $i<count($klasgenoten); $i++)
{
print '<tr>'.ENTER;
// toon klasgenoot en email adres aan de hand van de array index ($i)
print '<td width="80">'.$klasgenoten[$i].'</td>'.ENTER;
print '<td width="200">'.$emailadressen[$i].'</td>'.ENTER;
print '</tr>'.ENTER;
}
}
else
{
print '<tr><td>Verschil in array lengte tussen klasgenoten en emailadressen</td></tr>'.ENTER;
}
// sluit tabel af
print '</table>'.ENTER;
?>
// defineer enter voor mooie html presentatie
define( 'ENTER', "\r\n" );
$klasgenoten = array("Jan", "Piet", "Klaas", "Kees", "Karel", "Peter", "freek", "wim", "baas", "bham");
$emailadressen = array("[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]");
print '<table border="1">'.ENTER;
// controleer of array's even lang zijn
if (count($klasgenoten) == count($emailadressen))
{
// doorloop code in de for loop voor het aantal klasgenoten
for ($i=0; $i<count($klasgenoten); $i++)
{
print '<tr>'.ENTER;
// toon klasgenoot en email adres aan de hand van de array index ($i)
print '<td width="80">'.$klasgenoten[$i].'</td>'.ENTER;
print '<td width="200">'.$emailadressen[$i].'</td>'.ENTER;
print '</tr>'.ENTER;
}
}
else
{
print '<tr><td>Verschil in array lengte tussen klasgenoten en emailadressen</td></tr>'.ENTER;
}
// sluit tabel af
print '</table>'.ENTER;
?>
Maar ik denk Mr Bham dat het wel verstandig om dit misschien te lezen:
http://php.net/manual/en/language.types.array.php
Die bestaat al in php, namelijk PHP_EOL.
@Mr Bham: Jouw probleem is dat je twee onafhankelijke array's hebt. Je kan die natuurlijk tegelijkertijd doorlopen. Echter, als dan de juiste naam bij het juiste emailadres verschijnt, berust dat op toeval. Stel er wordt in één array een waarde gewist, dan klopt er niks meer van. Of stel het ene array wordt gesorteerd. Dan kun je ver zoeken. De oplossing is die van Karl of die van Roel. Op die manier zitten de waarden gekoppeld aan elkaar.
Om een tabel te maken doe je eerst <table> en dan pas de foreach of welke loop dan ook. En na de loop krijg je de </table> tag.
Als je het op de niet PHP manier wil doen, zul je een counter bij moeten houden die alles voor je bij houdt.
Dan ga je door je eerste lus, hou je een index bij, en binnen de lus loop je door de 2e array, net zolang je de array gevonden hebt welke overeen komt met de juiste index.
bijv:
Code (php)
Nu koppel je elke plaats binnen je eerste array aan dezelfde positie binnen de 2e array. Maar, als je dus een nieuwe rij toevoegt in de eerste array, kun je deze niet meer koppelen aan de juiste gebruiker in de 2e. Dus zul je daar ook een nieuwe rij op de juiste positie in moeten plaatsen.
Gewijzigd op 07/10/2010 00:45:02 door Pieter Jansen
associative array? Zoals hierboven genoemd
En wat is er mis met een simpele Gewijzigd op 07/10/2010 09:27:36 door niek s
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
#| " $klasgenoten " en " $emailadressen " combineren tot 1 nieuwe array.
$gegevens = array_combine($klasgenoten, $emailadressen);
#| " $gegevens " array doorlopen.
foreach($gegevens as $naam => $email){
// De rest van je code.
}
?>
#| " $klasgenoten " en " $emailadressen " combineren tot 1 nieuwe array.
$gegevens = array_combine($klasgenoten, $emailadressen);
#| " $gegevens " array doorlopen.
foreach($gegevens as $naam => $email){
// De rest van je code.
}
?>
Niek s op 07/10/2010 09:26:39:
En wat is er mis met een simpele associative array? Zoals hierboven genoemd
Ai, die bedoelde ik eigenlijk.
Dacht weer eens te ingewikkeld.