probleem met het maken van een multidimensionale array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Health Base zoekt een Ontwikkelaar expertsysteem

Health Base (Houten) verzamelt medische en farmaceutische gegevens en verrijkt deze met kennis en ervaringen van zorgverleners en patiënten tot praktisch toepasbare proces- en beslisondersteuning. Dit wordt onder meer toegepast in het apotheekinformatiesysteem Pharmacom en het huisartseninformatiesysteem Medicom van PharmaPartners BV. Voorbeelden zijn een elektronisch formularium, medicatiebewaking en protocollaire chronische zorg. In toenemende mate maken wij hiervoor beslisregels voor nog slimmere proces- en beslisondersteuning. Dit doen wij in het expertsysteem Blueriq. Voor de toepassing en doorontwikkeling van deze beslisregels zijn wij op korte termijn op zoek naar een: Ontwikkelaar expertsysteem 32 – 40 uur per week Taken Je vertaalt functionele

Bekijk vacature »

J opla

j opla

14/01/2020 22:58:01
Quote Anchor link
Hoi,

Ik probeer waarschijnlijk iets onmogelijks, maar misschien kan het toch. Ik wil een array maken met de volgende structuur:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $array
= ['item1' => [1, 3, 6], 'item2' => [18, 25,31]];
?>

Er zitten veel meer items in, maar goed.

Via de bovenstaande code lukt het prima. Maar nu wil ik het met een loop doen, iets als dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    $array
= ['item1', 'item2', 'item3'];
    $array3 = array();
    foreach ($array as $sleutel){
        $array2 = array();
        for ($i = 0, $i < 3, $i++){
            $array2[]= $i*2;
        }

        $array3[$sleutel] = $array2;
    }

?>

Ik zou een array verwachten met de volgende structuur na print_r($array3):
Array ( [item1] => Array ( [0] => 0 [1] => 2 [2] => 4 ) [item2] => Array ( [0] => 0 [1] => 2 [2] => 4 ) [item3] => Array ( [0] => 0 [1] => 2 [2] => 4 ))

Nu doet het volgende zich voor: bij elke ronde blijkt $array3 te worden overschreven. En krijg ik:
Array ( [item3] => Array ( [0] => 0 [1] => 2 [2] => 4 ))


Hoe zou ik het wel moeten doen?
Gewijzigd op 14/01/2020 22:59:09 door J opla
 
PHP hulp

PHP hulp

29/01/2020 00:44:17
 
- SanThe -

- SanThe -

14/01/2020 23:33:51
Quote Anchor link
Niet getest.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $array
= array('item1' => array(1, 3, 6), 'item2' => array(18, 25, 31));
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    $array
= array('item1', 'item2', 'item3');
    $array3 = array();
    foreach ($array as $sleutel){
        $array2 = array();
        for ($i = 0, $i < 3, $i++){
            $array2[]= $i*2;
        }

        $array3[$sleutel] = $array2;
    }

?>
 
J opla

j opla

14/01/2020 23:36:29
Quote Anchor link
dat lijkt erg op mijn eigen code ... waar zit het verschil?
 
- SanThe -

- SanThe -

14/01/2020 23:47:35
Quote Anchor link
$array = array('item1', 'item2', 'item3');
ipv.
$array = ['item1', 'item2', 'item3'];
 
J opla

j opla

14/01/2020 23:50:35
Quote Anchor link
volgens mijn documentatie is beiden goed ... ik geloof ook niet dat dat het probleem is ...
 
- SanThe -

- SanThe -

14/01/2020 23:53:15
Quote Anchor link
Werkt dat van mij ook niet?
 
J opla

j opla

14/01/2020 23:54:18
Quote Anchor link
Nee, net getest: Parse error: syntax error, unexpected ')', expecting ';' in /test2.php on line 6

Maar dat zal wel een ander probleem zijn ;)
 
Ozzie PHP

Ozzie PHP

15/01/2020 00:01:17
Quote Anchor link
J opla op 14/01/2020 23:54:18:
Nee, net getest: Parse error: syntax error, unexpected ')', expecting ';' in /test2.php on line 6

Maar dat zal wel een ander probleem zijn ;)

for ($i = 0, $i < 3, $i++){

Hier horen geen komma's te staan maar in plaats daarvan ;
 
J opla

j opla

15/01/2020 00:01:57
Quote Anchor link
dat waren inderdaad de "," die ";" hadden moeten zijn in de "for" loop

Toevoeging op 15/01/2020 00:03:09:

Ik krijg hier wel de goede array nu uit, dus het principe werkt wel ... nu kijken naar wat er i het script fout gaat.
 
- SanThe -

- SanThe -

15/01/2020 00:12:50
Quote Anchor link
Kwam ik eindelijk ook achter.
, => ;
Keek er steeds overheen.
 
J opla

j opla

15/01/2020 00:18:47
Quote Anchor link
Ah, gevonden, ik had in mijn oorspronkelijke script de declaratie van array3 na de foreach staan, dan wordt het natuurlijk steeds overschreven.
 
Ozzie PHP

Ozzie PHP

15/01/2020 00:20:56
Quote Anchor link
Het werkt gewoon zoals je verwacht hoor ...


https://3v4l.org/N48tD
 
J opla

j opla

15/01/2020 00:22:46
Quote Anchor link
Klopt, dank je voor de bevestiging
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/01/2020 02:29:25
Quote Anchor link
Waarom maak je een variabele $array3 aan? Gebruik liever toepasselijke namen. zoals $temp voor temporary (tijdelijk) en $result voor resultaat bijvoorbeeld.
 
J opla

j opla

15/01/2020 07:52:00
Quote Anchor link
@frank: in mijn echte script staan ook andere namen, maar er staat ook veel meer in. Dit was om te horen of het principe wel juist was en of ik niet iets probeerde dat onmogelijk was, zoals onlangs bij JavaScript. Als ik weet dat de methode wel goed is kon ik gerichter naar de fout zoeken en vinden.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/01/2020 08:25:57
Quote Anchor link
Mja het kan zijn dat het een testje is maar dan nog. Je deelt het op een forum en wij moeten de verschillen vervolgens zoeken tussen array 1 2 en 3. Het leest voor ons vervolgens veel minder makkelijk dan wanneer er gewoon klare taal gebruikt wordt. Gewoon maar een tip voor volgende keer he. Succes met je project :-)

Toevoeging op 15/01/2020 08:28:25:

Overigens, gebruik je wel een goede PHP editor? want die foutjes als een komma in plaats van een punt-komma haalt zo een editor er zo uit voor je. (gratis en goed is wat mij betreft netbeans).
 
J opla

j opla

15/01/2020 10:42:30
Quote Anchor link
@frank: ik zal er voortaan aan denken om nog duidelijker namen te maken in een post
 



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.