Gedrag foreach loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

C# .NET Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf. Lees dan snel verder! Voor deze functie zoeken wij een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Daarnaast begeleid je complexe projecten, wij zoeken iemand die altijd kansen ziet en waarbij het glas altijd half vol is. Voor deze functie zoeken wij een Developer met ervaring op het gebied van .NET die deze organisatie gaat versterken. Binnen de organisatie ga jij je vooral bezighouden met het verbeteren van

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

Ervaren PHP Software Developer

Functieomschrijving Voor een toffe opdrachtgever in regio Breda zijn wij op zoek naar een medior PHP Developer met affiniteit met Laravel. Je komt te werken bij een uitdagende opdrachtgever met supergave klanten in een specifieke branche. Als PHP ontwikkelaar ben je samen met een vooruitstrevende team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het vernieuwen van informatiesystemen voor een specifieke branche. Je ondersteunt complexe uitdagingen van klanten. Vervolgens breng je hun wensen in kaart en vertaalt deze door naar maatwerk software. Affiniteit met Laravel is een pré. Om de klanten zo goed mogelijk te ondersteunen en snel in

Bekijk vacature »

Java Developer

Dit ga je doen Het ontwikkelen van nieuwe software; Het ombouwen van de bestaande software; Zowel back- als front-end software ontwikkelen; Het testen; Het implementeren van de volledig geteste software; Het verzorgen van nazorg en het oplossen van bugs; Het opstellen en bijhouden van procesdocumentatie; Je draagt bij aan het agile/scrum processen van het team. Hier ga je werken Ongetwijfeld heb je een of meerdere producten van deze organisatie in huis. Het proces erachter, daar ben je ongetwijfeld minder bekend mee. Deze opdracht geeft je de kans meer over dit proces te weten te komen en een mooie bijdrage te

Bekijk vacature »

Senior Software Developer C++

Vacature details Vakgebied: Software/IT Opleiding: Senior Vacature ID: 13342 Introductie Do you want to work for one of the most innovative companies located in the region of Eindhoven. Currently Due to growth we are looking for a Senior Software Developer. Our client is a high-tech company with international roots and can provide you with a challenging opportunity. Functieomschrijving Responsibilities: Design, develop, and maintain high-quality software applications in C++ Collaborate with other engineers, product managers, and stakeholders to understand requirements and develop solutions Write clean, maintainable, and efficient code Conduct thorough testing and debugging to ensure high-quality software Optimize applications for

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Low code Developer

Dit ga je doen Je richt je op het doorontwikkelen van bestaande applicaties en het geheel van scratch af aan opzetten van nieuwe applicaties binnen een low code platform; Je beoordeelt technisch ontwerpen en maakt de vertaalslag naar de technische oplossingen binnen het platform; Je voert testwerkzaamheden uit; Je adviseert de organisatie op jouw vakgebied; Je schakelt met business analisten en de architect om tot mooie oplossingen te komen; Je lost bugs op en denkt mee over een structurele oplossing. Hier ga je werken Het gaat om een bekend internationaal handelsbedrijf met ruim 800 medewerkers, verdeeld over verschillende deelbedrijven. Deze

Bekijk vacature »

Back-end PHP Developer

Dit ga je doen Her- en uitbouwen van het inhouse softwareplatform dmv PHP; Onderhouden van bovengenoemd platform in PHP; Sparren met het team; Meedenken over nieuwe functionaliteiten, security etc; Jouw input leveren aan het proces door op de hoogte te blijven van nieuwe ontwikkelingen etc. Hier ga je werken Onze klant, gevestigd in de omgeving van Alkmaar, levert wereldwijd oplossingen op het gebied van IT. Dag in dag uit werken zij met veel passie aan hun product waarmee ze streven naar verbeteringen binnen zorg. Voor onze klant zijn we op zoek naar een medior PHP Developer. Je komt te werken

Bekijk vacature »
Luc Vanderveurst

Luc Vanderveurst

10/11/2024 18:42:12
Quote Anchor link
Beste,

Ik vraag mij af wat er fout gaat met volgende code.

De output van:

for ($j = 1; $j <= 6; $j++)
{
print "index 6 3 : " . $course_list[6][3] . "\n";
}

is :
index 6 3 : 5
index 6 3 : 5
index 6 3 : 5
index 6 3 : 5
index 6 3 : 5
index 6 3 : 5
index 6 3 : 5

Dat is correct. In het block wordt $j of $var niet gebruikt, de geprinte lijn is dan ook steeds hetzelfde.

De output van :

foreach ($course_list as $j => $lcourse)
{
print "index 6 3 : " . $course_list[6][3] . "\n";
}

is :
index 6 3 : 1
index 6 3 : -1
index 6 3 : 2
index 6 3 : 3
index 6 3 : 4
index 6 3 : 4

Dat snap ik niet. de waarden zijn die van $course_list[$j][3], behalve voor $j = 6, dat zou 5 moeten zijn, zoals in het eerste voorbeeld.

Maar ik verwachtte dat de output van de twee voorbeelden hetzelfde zou zijn.
Wat mis ik hier ?

Alvast bedankt,
Luc.
 
PHP hulp

PHP hulp

21/12/2024 14:06:02
 
Ivo P

Ivo P

11/11/2024 09:25:49
Quote Anchor link
klopt die code die je hier plaatst? Er staat overal [6][3]

Wil je daar niet ergens een $j in hebben?
 
Luc Vanderveurst

Luc Vanderveurst

11/11/2024 15:12:07
Quote Anchor link
Ivo P op 11/11/2024 09:25:49:
klopt die code die je hier plaatst? Er staat overal [6][3]

Wil je daar niet ergens een $j in hebben?


Ja, dat is het net :-). Het is omdat de waarden niet klopten als $j = 6 dat ik verder ben beginnen kijken.

De statements en output zijn dus wel degelijk uitgevoerd zoals afgebeeld.

Het statement in de foreach loop bevat $j niet, en de print is dus 'statisch', en geeft toch verschillende waarden, alsof er ipv 6 $j zou staan, behalve voor de laatste, die zou 5 moeten zijn ipv 4, zoals in de for loop het geval is.
Tussen de twee loops, werd er niets aan de array gewijzigd, en de volgorde van de statements heeft ook geen belang.

Dat voorafgaand aan dit statement $course_list werd aangepast binnen een foreach($course_list ...) heeft er mee te maken, maar dan nog kan ik dit niet verklaren.

Ik heb nu alle foreach loopen verwijderd en vervangen door klassieke for loopen op index.

Mvg,
Luc.
Gewijzigd op 11/11/2024 15:17:40 door Luc Vanderveurst
 
Ozzie PHP

Ozzie PHP

11/11/2024 15:55:40
Quote Anchor link
Geen idee of dit relevant is, maar een array begint te tellen bij 0 en niet bij 1. De eerste key is dus key 0.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$fruit
= ['appel', 'banaan'];

echo $fruit[1]; // dit toont 'banaan'

?>

Als er 6 elementen in jouw array zitten, dan is het laatste element dus key 5.
 
Ivo P

Ivo P

12/11/2024 10:27:26
Quote Anchor link
En ik begrijp niet helemaal hoe jij nu door een 2 dimensionaal array heen aan het lopen bent.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$fuitjes
= ['appel', 'banaan'];
foreach($fruitjes as $i => $vrucht) {
  echo 'nummer ' . $i . ' = '. $vrucht . "<br>\n";
}

?>


Maar als je 2 dimensies hebt, dan in $vrucht ook weer een array. Of wil je steeds element "3" van de 2e laag hebben?

Door steeds hard 6 en 3 in je code te zetten, wordt je verhaal niet veel duidelijker.
 
Luc Vanderveurst

Luc Vanderveurst

12/11/2024 13:46:19
Quote Anchor link
Buiten het illustreren van het probleem waar ik tegenaan loop, hebben deze statements geen enkel nut. Je moet er dan verder ook geen logica achter zoeken. Sorry als dat niet duidelijk was.

Twee loop statements waarbij het statement in de loop niet wordt beinvloed door de variabelen in de loop, geven verschillend resultaat. En dat vind ik gek en kan ik niet verklaren.
 
Ozzie PHP

Ozzie PHP

12/11/2024 15:00:15
Quote Anchor link
Post dan nog eens de complete code met de beide loops? Inclusief de inhoud van $course_list.
 
Ward van der Put
Moderator

Ward van der Put

12/11/2024 16:40:17
Quote Anchor link
Luc Vanderveurst op 12/11/2024 13:46:19:
Twee loop statements waarbij het statement in de loop niet wordt beinvloed door de variabelen in de loop, geven verschillend resultaat. En dat vind ik gek en kan ik niet verklaren.

Een iterator heeft een key (of pointer) die verandert wanneer je de elementen langsloopt.

Daar kun je last van hebben wanneer je niet beseft dat die verplaatsing achter de schermen plaatsvindt of wanneer je zelf bewust de key verplaatst tijdens het itereren.

Het kan ook tot bugs leiden die op het eerste gezicht onverklaarbaar lijken. Staat de key bijvoorbeeld op het laatste element in een array, dan lijk je geen elementen meer te kunnen lezen, ook al weet je dat de array meer data bevat. Dit soort bugs treedt typisch op als je probeert meer dan één operatie uit te voeren met één iterator, bijvoorbeeld in een loop zoals een foreach.
 
- SanThe -

- SanThe -

12/11/2024 16:56:44
Quote Anchor link
@Ward en anderen

Volgens zijn eerste post leveren deze twee regels:
Luc Vanderveurst op 10/11/2024 18:42:12:
print "index 6 3 : " . $course_list[6][3] . "\n";
print "index 6 3 : " . $course_list[6][3] . "\n";

die in de verschillende foreach() staan verschillende output.

Lijkt mij onmogelijk maar het is de vraag: Waardoor?
 
Ward van der Put
Moderator

Ward van der Put

12/11/2024 18:59:31
Quote Anchor link
Mijn educated guess is dat het, zoals gezegd, samenhangt met de adressering van elementen in de iterator, want:

Luc Vanderveurst op 11/11/2024 15:12:07:
Ik heb nu alle foreach loopen verwijderd en vervangen door klassieke for loopen op index.


Maar zoals Ozzie aangeeft: daar kunnen we slechts naar raden als de topicstarter alleen de vereenvoudigde code post die hij begrijpt en niet de code die operaties uitvoert met de iterator of elementen in de iterator.

Het gedrag van een iterator is niet vreemd als je maar weet hoe een iterator werkt.
 
Luc Vanderveurst

Luc Vanderveurst

14/11/2024 00:52:42
Quote Anchor link
Ozzie PHP op 12/11/2024 15:00:15:
Post dan nog eens de complete code met de beide loops? Inclusief de inhoud van $course_list.


Hier is de code voor inhoud en foreach loop :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
        print_r($course_list);
        foreach($course_list as $j => $lcourse)
        {
                print "$j " . $course_list[6][3] . "\n";
        }


En dit is de output :

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Array
(
    [1] => Array
        (
            [0] => AMUSE
            [1] => Wortel tartaar
            [2] => 32
            [3] => 1
        )

    [2] => Array
        (
            [0] => hoofdgerecht
            [1] => Voeg de rest van de ingredi?nten toe en laat zo lang als mogelijk tegen de kook aan trekken
            [2] => 51
            [3] => -1
        )

    [3] => Array
        (
            [0] => VOORGERECHT
            [1] => Krokante gamba`s met Aziatisch aangemaakte groentesalade en een oosterse sesam vinaigrette
            [2] => 61
            [3] => 2
        )

    [4] => Array
        (
            [0] => TUSSENGERECHT
            [1] => Gemarineerde zalm, boemboe Bali, wortel en gember
            [2] => 80
            [3] => 3
        )

    [5] => Array
        (
            [0] => HOOFDGERECHT
            [1] => Kiprouleau met ras el hanout-roomsaus
            [2] => 109
            [3] => 4
        )

    [6] => Array
        (
            [0] => NAGERECHT
            [1] => bramencake met munt en ijs van zoute amandelen
            [2] => 126
            [3] => 5
        )

)

1 1
2 -1
3 2
4 3
5 4
6 4
Gewijzigd op 14/11/2024 00:56:48 door Luc Vanderveurst
 
Ward van der Put
Moderator

Ward van der Put

14/11/2024 13:40:33
Quote Anchor link
Is dat wel álle code?

Ik krijg namelijk gewoon:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
1 5
2 5
3 5
4 5
5 5
6 5


Testscript:

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
<?php

$course_list
= array(
    1 => array('AMUSE', 'Wortel tartaar', 32, 1),
    2 => array('hoofdgerecht', 'Voeg de rest van de ingrediënten toe en laat zo lang als mogelijk tegen de kook aan trekken', 51, -1),
    3 => array('VOORGERECHT', 'Krokante gamba\'s met Aziatisch aangemaakte groentesalade en een oosterse sesam vinaigrette', 61, 2),
    4 => array('TUSSENGERECHT', 'Gemarineerde zalm, boemboe Bali, wortel en gember', 80, 3),
    5 => array('HOOFDGERECHT', 'Kiprouleau met ras el hanout-roomsaus', 109, 4),
    6 => array('NAGERECHT', 'bramencake met munt en ijs van zoute amandelen', 126, 5)
);


print_r($course_list);
foreach($course_list as $j => $lcourse)
{

    print "$j " . $course_list[6][3] . "\n";
}


?>


Zie: https://3v4l.org/LqTSf#v8.3.13
 
Ivo P

Ivo P

14/11/2024 13:58:31
Quote Anchor link
dan staat op de plek van [6] mogelijk toch [$j]

of $course_list[6][3] is dan $lcourse[3]

Of in de lus gebeurt meer, waardoor de inhoud van $course_list intussen steeds aangepast wordt. (hergebruik van een naam van een variabele?)
 
Luc Vanderveurst

Luc Vanderveurst

14/11/2024 14:34:04
Quote Anchor link
Tussen die print_r en de for loop wordt geen extra code meer uitgevoerd.


Maar, ... ik heb nog wat gevonden.
Eerst wordt in arrea $course_list[$j], [0],[1] en [2] opgevuld (dus $course_list[$j][$k] met k 0 , 1 en 2).

Nadien wordt in een foreach loop index 3 opgevuld.

In die foreach groep staat : foreach($course_list as $j => &$lcourse)
dus met een & voor om de waarden te kunnen wijzigen.

Iets waarvan ik nadien afgestapt ben en de wijzingen (aanpassen van $course_list[$j][3]) via $course_list[$j] heb uitgevoerd, dus die '&' was overbodig.
Maar dat is wel de boosdoener. Zonder die & krijg ik wel het goede resultaat.

De print_r toont wel de juiste data, dus ik blijf het vreemd vinden dat die loop (om de data op te vullen) een impact heeft op de data in een andere loop (om de data te tonen).



Toevoeging op 14/11/2024 14:40:05:

Als je in :
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
<?php

$course_list
= array(
    1 => array('AMUSE', 'Wortel tartaar', 32, 1),
    2 => array('hoofdgerecht', 'Voeg de rest van de ingrediënten toe en laat zo lang als mogelijk tegen de kook aan trekken', 51, -1),
    3 => array('VOORGERECHT', 'Krokante gamba\'s met Aziatisch aangemaakte groentesalade en een oosterse sesam vinaigrette', 61, 2),
    4 => array('TUSSENGERECHT', 'Gemarineerde zalm, boemboe Bali, wortel en gember', 80, 3),
    5 => array('HOOFDGERECHT', 'Kiprouleau met ras el hanout-roomsaus', 109, 4),
    6 => array('NAGERECHT', 'bramencake met munt en ijs van zoute amandelen', 126, 5)
);


print_r($course_list);
foreach($course_list as $j => $lcourse)
{

    print "$j " . $course_list[6][3] . "\n";
}


?>


foreach($course_list as $j => $lcourse) vervangt door foreach($course_list as $j => &$lcourse)

dan krijg je denk ik ook het foute resultaat.

Ik krijg het foute resultaat ook zonder die &, maar dus omdat een eerdere foreach loop die & wel bevatte.
 
Ozzie PHP

Ozzie PHP

14/11/2024 20:46:50
Quote Anchor link
Je hebt dus niet de complete code gepost. Met & maak je een 'by reference' koppeling.

Zet direct na die foreach loop waarin je & gebruikt eens unset($lcourse). Dus als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

foreach($course_list as $j => &$lcourse) {
...
}


unset($lcourse);

?>

Probeer het dan nog eens.
 
Ozzie PHP

Ozzie PHP

19/11/2024 14:19:02
Quote Anchor link
En, heb je het al geprobeerd?
 
Luc Vanderveurst

Luc Vanderveurst

20/11/2024 16:31:51
Quote Anchor link
Ja, ik had het geprobeerd, en hier een uitvoerig antwoord gegeven, maar na een tijd logt phphulp je uit, moet je bij het posten opnieuw inloggen, en ben je je post kwijt.
Het was er nog niet van gekomen het antwoord opnieuw samen te stellen.

Ozzie PHP op 14/11/2024 20:46:50:
Je hebt dus niet de complete code gepost. Met & maak je een 'by reference' koppeling.

Klopt, daar bleek niet uit hoe de array was aangepast. Het hele programma posten zou ook niet overzichtelijk geweest zijn, de werking is data-driven en gebaseerd op externe files, ik had enkel gepost wat ik dacht dat relevant was, en dat was dus niet genoeg.

Quote:
Zet direct na die foreach loop waarin je & gebruikt eens unset($lcourse). Dus als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

foreach($course_list as $j => &$lcourse) {
...
}


unset($lcourse);

?>

Probeer het dan nog eens.


Voortbouwend op het voorbeeld wat Ward heeft gepost:

Quote:
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
<?php

$course_list
= array(
    1 => array('AMUSE', 'Wortel tartaar', 32, 1),
    2 => array('hoofdgerecht', 'Voeg de rest van de ingrediënten toe en laat zo lang als mogelijk tegen de kook aan trekken', 51, -1),
    3 => array('VOORGERECHT', 'Krokante gamba\'s met Aziatisch aangemaakte groentesalade en een oosterse sesam vinaigrette', 61, 2),
    4 => array('TUSSENGERECHT', 'Gemarineerde zalm, boemboe Bali, wortel en gember', 80, 3),
    5 => array('HOOFDGERECHT', 'Kiprouleau met ras el hanout-roomsaus', 109, 4),
    6 => array('NAGERECHT', 'bramencake met munt en ijs van zoute amandelen', 126, 5)
);


print_r($course_list);
foreach($course_list as $j => &$lcourse)
{

   $i = 1; # doe iets
}
# unset($lcourse);
foreach($course_list as $j => $lcourse)
{

    print "$j " . $course_list[6][3] . "\n";
}


?>

geeft fout resultaat met de unset in kommentaar:
Quote:
1 1
2 -1
3 2
4 3
5 4
6 4

en goed resultaat met de unset uit kommentaar:
Quote:
1 5
2 5
3 5
4 5
5 5
6 5

Dus die unset lost inderdaad het probleem op. Thanks.
Wat ook het probleem oplost is:
- in de tweede foreach loop ook een call by reference zetten
- in de tweede foreach loop een andere variabele gebruiken.
Gewijzigd op 20/11/2024 22:35:51 door Luc Vanderveurst
 
Ozzie PHP

Ozzie PHP

20/11/2024 23:34:43
Quote Anchor link
Bedankt voor je reactie. Dan zal het dus gelegen hebben aan de call by reference.
 



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.