php loop foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mr Beronne

Mr Beronne

06/10/2010 21:55:46
Quote Anchor link
Beste mensen,

ik zit met het volgende probleem.

ik heb 2 array's aangemaakt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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]");
    ?>


nu moet ik ze weergeven in een tabel dit wilt me nog lukken
hier het stukje waar ik de array's opvraag:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
        foreach($klasgenoten as $namen){
            echo "<table border=\"1\" width=\"80\"><tr><td>". $namen . "</td></tr></table>";
        }

        
        foreach($emailadressen as $mails){
            echo "<table border=\"1\" width=\"200\"><tr><td>". $mails . "</td></tr></table>";
        }

    ?>


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

PHP hulp

25/11/2024 03:21:20
 

06/10/2010 22:15:14
 
Roel -

Roel -

06/10/2010 22:40:21
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 />';
}

?>


Je zult de rest nog wel even moeten vullen.
 
Erwin van Hoof

Erwin van Hoof

06/10/2010 22:43:05
Quote Anchor link
Het kan ook zo zonder multi array:

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
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;


?>


Maar ik denk Mr Bham dat het wel verstandig om dit misschien te lezen:
http://php.net/manual/en/language.types.array.php
 
- SanThe -

- SanThe -

06/10/2010 23:04:56
Quote Anchor link
@Erwin van Hoof: define( 'ENTER', "\r\n" );
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.
 
Pieter Jansen

Pieter Jansen

07/10/2010 00:33:04
Quote Anchor link
Op zich kan het wel hoor. In elke willekeurige andere taal heb je vaak geen multidimensionale arrays. Eigenlijk is dat vrij uniek in PHP, maar de PHP oplossing is dus een multidimensionale array.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$arr1
= array(0,1,2);
$arr2 = array("nul", "een", "twee");
$index = 0;

$string = '';

foreach($arr1 as $ar1)
{

    $string .= "<p>Array nummer: ".$ar1." met tekst: ".$arr2[$index]."</p>";
    $index++;
}


echo $string;
?>


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
 
Niek s

niek s

07/10/2010 09:26:39
Quote Anchor link
En wat is er mis met een simpele associative array? Zoals hierboven genoemd
Gewijzigd op 07/10/2010 09:27:36 door niek s
 
- Mark -

- Mark -

07/10/2010 10:06:37
Quote Anchor link
Als het alleen bij deze twee arrays blijft kun je ze ook combineren.

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
<?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.
        }

?>
 

07/10/2010 11:42:26
Quote Anchor link
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.
 



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.