Gedrag foreach loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front-End Developer

As a Senior Front-end Developer you maintain the balance between creativity and functionality for our webshop, and you coach your fellow developers. How do I become a Senior Front-End Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Senior Front-End Developer at Coolblue?

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Modern, innovatief en Informeel bedrijf waar veel mogelijk is Werken met diverse robot merken Meehelpen met inbedrijfstellingen bij de klant De organisatie Hier ga je aan de slag Dit groeiende bedrijf van totaaloplossingen in de automatisering van productieprocessen, is hoofdzakelijk actief in de Benelux. Vanuit het kantoor in regio Amersfoort worden veel oplossingen geboden in de vorm van robotica. Geen project is hetzelfde wat garant staat voor bijzonder veel afwisseling. De bedrijfsgrootte is ongeveer 80 man. Van gerobotiseerde machinebeladingen tot aan assemblage automatiseringen wordt vanuit krachtige engineering maatwerk equipment geleverd.

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 Boskoop 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 technische klussen uitvoeren op locatie bij klanten.Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het development team. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met

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 »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer!? Sta jij aan het begin van jouw loopbaan of heb jij misschien al enige ervaring? Vind jij het daarnaast belangrijk om jezelf constant te kunnen ontwikkelen en uitdagen? Lees dan snel verder! Voor een vooraanstaand softwarehuis in Nieuwegein ben ik op zoek naar een Junior Software Developer. De eigenaar van het bedrijf is ervan bewust dat je als junior nog een hoop kan leren, waardoor je de eerste maanden veel begeleiding en diverse trainingen krijgt. Daarna ga je samen met je collega's aan zowel kleine als grote projecten werken.

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

C#.NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie; Het oplossen van bugs en incidenten. Hier ga je werken Als C#.NET Developer binnen deze organisatie kan jij het verschil maken. Zij werken momenteel nog met programmatuur die is ontwikkeld in C++. Hiervan gaan zij afscheid nemen zodra alle nieuwe software in C#.NET geschreven is. Een grootschalig en langdurig project. Voor hen is deze software van

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

Traineeship IT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

IT Infrastructuur Developer

IT Infrastructuur Developer Ben jij (bijna) klaar met je HBO studie in de richting van IT? Opzoek naar een spannende eerste baan, waar je ontzettend veel kan leren? Dan hebben wij de ultieme job voor jou! Voor een goede klant van ons in de financiële dienstverlening zijn wij opzoek naar een Junior Infrastructure Developer. Deze baan is een mooie kans om een sterke start te geven aan jouw carrière binnen de IT! De job Je werkt nauw samen met het Devops team, en zal je voornamelijk bezighouden met het automatiseren van infrastructure componenten. De componenten worden opgevraagd door het DevOps

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

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 07:57:58
 
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.