Gedrag foreach loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda ben je als PHP/Symfony Developer niet alleen gefocust op het ontwikkelen van software. Daarnaast ben je voortdurend bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Hieronder een kort overzicht van jouw takenpakket: Het ontwerpen en implementeren van webapplicaties met het Symfony Framework; Het schrijven van een schone en efficiënte codes; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klant; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Ervaren PHP Developer

Functie omschrijving Jelling IT zoekt ervaren PHP developer! Voor een organisatie in de regio Rhenen zijn wij op zoek naar een ervaren PHP developer die gaat functioneren als een verlengstuk van de klant. Jij bent iemand die technisch complexe zaken met enthousiasme aanvliegt. Je bent in staat om aan meerdere projecten te werken en werkt graag met de nieuwste technieken. In deze functie werk je veel samen met front-end developers en stel je alles in het werk om grote verschillen voor de klanten teweeg te brengen. Verder ben jij iemand die graag zichzelf uitdaagt en die altijd de beste wilt

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Software Programmeur PHP

Functie Ben jij op zoek naar een nieuwe uitdaging als PHP developer en zoek je een leuke platte organisatie? Lees dan snel verder! Voor een opdrachtgever in omgeving Capelle aan den IJssel dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan

Bekijk vacature »

.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 PHP developer/ Software Architect

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Senior Front end developer

Functie Wij zijn op zoek naar een ambitieuze, zelfsturende Front-end Expert die ons (internationale) team komt versterken. Onze huidige software development afdeling bestaat uit 7 developers en designers. Wij zijn een écht softwarehuis, dus ervaring in software development is wel echt een must. Er wordt tegelijkertijd aan meerdere projecten gewerkt, voor mooie toonaangevende klanten. Je hebt dus regelmatig te maken met deadlines en opleveringen. Een deel van onze omgeving is in Angular.JS. Dit deel wordt langzamerhand omgebouwd naar de nieuwste versie van Angular. Jouw werkzaamheden zullen bestaan uit: Het aansturen en begeleiden van jouw collega’s Het implementeren van visuele elementen

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

Senior Front-end developer Consultancy

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

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/11/2024 08:18:51
 
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.