Toon posts:

[PHP] Variable moet per foreach veranderen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo iedereen,

Ik wil als output hebben dat er random groepjes van 2 personen worden gemaakt. Het probleem is dat ik niet weet hoe ik makkelijk elke de waarde verander van een variable die zich ook vasthoudt. Dit is een opdracht voor school.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

function maakGroepjes($leerlingen) {
    shuffle($leerlingen);
    foreach ($leerlingen as $reeks => $naam) {
        $output = $naam . (" en ") . $naam;
    }
    return $output;
}

$leerlingen = array("tobias", "hasna", "aukje", "fred",
    "sep", "koen", "wahed", "anna", "jackie", "rashida",
    "winston", "sammy", "manon", "ben", "karim", "bart", "lisa",
    "lieke");

echo maakGroepjes($leerlingen);
?>


Ik wil de output zo hebben:

bart en fred
aukje en rashida
ben en winston
sep en manon
koen en sammy
wahed en karim
anna en hasna
lisa en tobias
jackie en lieke

Mvg, JJ

Acties:
  • +1 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Misschien moet je een gewoon for loopje gebruiken.
Je haalt leerling[$i] op en je haalt leerling[$i+1] op en zorgt natuurlijk dat je geen index out of bounds problemen krijgt.

Dan heb je volgens mij al wat je wil hebben zonder het letterlijk uit te programmeren ;)

Last.fm | Code Talks


Acties:
  • +2 Henk 'm!

  • Compizfox
  • Registratie: Januari 2009
  • Laatst online: 09-10 19:07

Compizfox

Bait for wenchmarks

Van je omschrijving begrijp ik eerlijk gezegd niets, maar aan je voorbeeld te zien (die is wel duidelijk ;)) wil je dus willekeurige pairs selecteren uit een array?
Afvalzak schreef op dinsdag 04 oktober 2016 @ 20:50:
Misschien moet je een gewoon for loopje gebruiken.
Je haalt leerling[$i] op en je haalt leerling[$i+1] op en zorgt natuurlijk dat je geen index out of bounds problemen krijgt.

Dan heb je volgens mij al wat je wil hebben zonder het letterlijk uit te programmeren ;)
Daar dacht ik inderdaad ook aan, maar het kan nog mooier met array_chunk:

PHP:
1
2
3
4
5
6
7
$leerlingen = ["tobias", "hasna", "aukje", "fred",
"sep", "koen", "wahed", "anna", "jackie", "rashida",
"winston", "sammy", "manon", "ben", "karim", "bart", "lisa",
"lieke"];

shuffle($leerlingen);
$pairs = array_chunk($leerlingen, 2);


Deze retourneert (zoals uitgelegd in de documentatie) een array van arrays. Als je ze dan wilt outputten kun je dat zo doen:

PHP:
1
2
3
foreach($pairs as $pair) {
    echo($pair[0] . 'en' . $pair[1]);
}

[ Voor 3% gewijzigd door Compizfox op 04-10-2016 20:56 ]

Gewoon een heel grote verzameling snoertjes


Acties:
  • +1 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Compizfox schreef op dinsdag 04 oktober 2016 @ 20:55:
Van je omschrijving begrijp ik eerlijk gezegd niets, maar aan je voorbeeld te zien (die is wel duidelijk ;)) wil je dus willekeurige pairs selecteren uit een array?


[...]

Daar dacht ik inderdaad ook aan, maar het kan nog mooier met array_chunk:

PHP:
1
2
3
4
5
6
7
$leerlingen = ["tobias", "hasna", "aukje", "fred",
"sep", "koen", "wahed", "anna", "jackie", "rashida",
"winston", "sammy", "manon", "ben", "karim", "bart", "lisa",
"lieke"];

shuffle($leerlingen);
$pairs = array_chunk($leerlingen, 2);


Als je ze dan wilt outputten kun je dat zo doen:

PHP:
1
2
3
foreach($pairs as $pair) {
    echo($pair[0] . 'en' . $pair[1]);
}
Mijn PHP is roestig, dus had nog niet van deze methode gehoord, maar weer wat geleerd! :)

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Compizfox schreef op dinsdag 04 oktober 2016 @ 20:55:
Van je omschrijving begrijp ik eerlijk gezegd niets, maar aan je voorbeeld te zien (die is wel duidelijk ;)) wil je dus willekeurige pairs selecteren uit een array?
Ja klopt, dat is de bedoeling!
Bedankt voor uw reactie!

[ Voor 0% gewijzigd door RobIII op 04-10-2016 21:15 . Reden: Quote gefixed ]


Acties:
  • +2 Henk 'm!

  • DirkZzZ
  • Registratie: September 2007
  • Laatst online: 04-09 10:02
Compizfox schreef op dinsdag 04 oktober 2016 @ 20:55:
Van je omschrijving begrijp ik eerlijk gezegd niets, maar aan je voorbeeld te zien (die is wel duidelijk ;)) wil je dus willekeurige pairs selecteren uit een array?


[...]

Daar dacht ik inderdaad ook aan, maar het kan nog mooier met array_chunk:

PHP:
1
2
3
4
5
6
7
$leerlingen = ["tobias", "hasna", "aukje", "fred",
"sep", "koen", "wahed", "anna", "jackie", "rashida",
"winston", "sammy", "manon", "ben", "karim", "bart", "lisa",
"lieke"];

shuffle($leerlingen);
$pairs = array_chunk($leerlingen, 2);


Als je ze dan wilt outputten kun je dat zo doen:

PHP:
1
2
3
foreach($pairs as $pair) {
    echo($pair[0] . 'en' . $pair[1]);
}
Of wanneer je toch groepjes van 2 hebt gewoon imploden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$leerlingen = array("tobias", "hasna", "aukje", "fred",
"sep", "koen", "wahed", "anna", "jackie", "rashida",
"winston", "sammy", "manon", "ben", "karim", "bart", "lisa",
"lieke");

shuffle($leerlingen);
foreach(array_chunk($leerlingen, 2) AS $groepje)
{
    echo implode(" en ", $groepje) . '<br/>';
}


Doet hij ook minder lastig wanneer je een oneven leerlingen hebt.

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wil je voortaan code tags gebruiken bij 't posten van code a.u.b.?

@rest: mensen, mensen, laten we het nou niet helemaal voorkauwen:
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op dinsdag 04 oktober 2016 @ 21:13:
[...]

Wil je voortaan code tags gebruiken bij 't posten van code a.u.b.?

@rest: mensen, mensen, laten we het nou niet helemaal voorkauwen:

[...]
Heb het aangepast :)
Pagina: 1