Gedrag foreach loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer

Functie omschrijving Ervaren .NET Developer gezocht! Wij zoeken een ervaren .NET developer die aan de slag gaat voor een softwarebedrijf in de regio Rhenen. In deze rol ben jij zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Daarnaast houdt jij je bezig met de nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en product specialisten om mooie producten te creëren. Bedrijfsprofiel Waar kom je te werken? Je komt te werken voor snelgroeiende softwareleverancier en allround dienstverlener. Klanten van deze

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

Bekijk vacature »

PHP Developer

Functieomschrijving Wij zijn op zoek naar een PHP Developer met Laravel ervaring! Voor een groeiende werkgever in regio Breda zijn wij op zoek naar een medior PHP developer met Laravel ervaring. Je gaat aan de slag met het ontwikkelen van maatwerk software voor klanten in een specifieke markt. Als PHP developer ben je samen met een gemotiveerd team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het innoveren van informatiesystemen voor klanten in een specifieke branche. Als software developer ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Om

Bekijk vacature »

Software Developer C# / ASP .Net

Functie omschrijving Ben jij een software ontwikkelaar die bekend is met termen ASP .NET, C# en SQL? Lees dan snel verder! Voor een bedrijf binnen de agrarische sector zijn wij namelijk op zoek naar een zelfstandige, enthousiaste en proactieve Software Developer die open staat voor een afwisselende functie met veel uitdaging. Binnen deze organisatie ben jij als Software Developer samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Hierbij draag jij bij aan de vertaling van klantwensen naar effectieve softwareoplossingen. Daarnaast ben je verantwoordelijk voor: Schatten

Bekijk vacature »

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Infrastructure Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12945 Introductie Our client is one of the most innovative companies within the Netherlands. Currently we are looking for an Infrastructure Platform Engineer. Within this role you will be developing the infrastructure. Functieomschrijving Within this role you are responsible in the development of our distributed data and compute platform infrastructure. You will design, develop and implement new features and fixes. Next to this you will integrate and configurate other packages that supports the development of tuning applications within the organisation. You will support customer sites remotely. Design and implement the

Bekijk vacature »

C# .NET Software Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen software development waar je gaat werken voor een jong en flexibel bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Software Developer met ervaring binnen C# .NET die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! In deze functie ga jij je bezighouden met: Meedenken in oplossingsrichtingen; Werken aan de architectuur; Het verbeteren van functionaliteiten binnen het dataplatform; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je aan de

Bekijk vacature »

HBO startersfunctie .NET Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Ben je in januari 2023 klaar met je HBO opleiding en zoek je een mooie uitdaging? Wacht niet langer en solliciteer direct! Voor een familiebedrijf in de regio van Boxtel ben ik op zoek naar een C#.NET Ontwikkelaar. Jij gaat aan de slag met de (door)ontwikkeling van de maatwerksoftware projecten en gaat ook nieuwe software bouwen, middels de Microsoft-stack. Het bedrijf maakt gebruik van de volgende technieken: C# & ASP.NET; MVC; MS SQL; Entity Framework; Je krijgt hier veel tijd om te leren en eventueel door te groeien en het

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »

IT Manager team PaaS

TenneT is hard groeiende om haar ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Lead PaaS die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je wordt de Teammanager (Lead) van een nieuw team binnen de afdeling Basic van Information Technology and Facilities (ITF) van TenneT. Het team heet Platform as a Service. Hier wordt elke dag in een goede sfeer met zijn allen hard gewerkt om vanuit IT

Bekijk vacature »

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

Bekijk vacature »

Java Developer / Sociaal domein

Dit ga je doen Nieuwbouw en doorontwikkeling; Beheer en wanneer nodig onderhoud; Bijdrage leveren in het functioneel- en technisch ontwerptraject; Analyseren van productie verstoringen; Meedenken over vernieuwingen en verbeteringen. Hier ga je werken De organisatie waar jij komt te werken focust zich op software development met een maatschappelijk tintje. De afdeling software ontwikkeling bestaat uit vijf verschillende scrum teams, met allen hun eigen focus gebied. Zo zijn er een aantal teams die zich focussen op specifieke applicaties, maar is er ook een team gericht op projecten. Binnen de organisatie staat innovatie en kwaliteit voorop. Een aantal applicaties draait nog op

Bekijk vacature »

Software Developer .NET

Functie omschrijving .NET developer gezocht! Wij zoek op zoek naar een .NET Developer die zich niet uit het veld laat slaan voor een software bedrijf in de regio Veenendaal. Je gaat in deze functie aan de slag met het door ontwikkelen van bestaande producten en het ontwikkelen van nieuwe producten. Dit bedrijf ontwikkeld SaaS applicaties die zowel intern als extern gebruikt worden. Verder bestaat je functie uit: Het ontwikkelen en bouwen van webapplicatie, mobiele applicaties en websites vallen onder jouw verantwoordelijkheden; Werken met onder andere .NET, C#, HTML/CSS, Javascript en MSSQL/Oracle Databases; Hierin werk je samen met andere developers en

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

03/01/2025 01:37:10
 
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.