10 berichten aan het bekijken - 1 tot 10 (van in totaal 10)
  • Q:

    Bijdrager
    Shmoo

    PHP: multidimensional array uitlezen met foreach

    Dit is zo’n irritant gedoe.

     

    Ik moet voor school een form maken met meerdere select items die dan in een multidimensional array terecht komen.

     

    Daarna is het de bedoeling dat ik deze uitlees met een foreach() loop en als extra stap (bonuspunten) moet ik ook nog met een if statement controleren of één specifieke item in de select is geselecteerd. Zo ja, dan moet ik dit aangeven.

     

    Ht probleem zit ‘m vooral in dat uitlezen van die multidimensional array met de foreach() loop. Mijn leerkracht heeft gezegd dat je een multidimensional array het beste kunt zien als een HTML table met rijen en kolommen.

     

    Dit probleem ik ook te visualiseren in mijn hoofd en soms maak ik een var_dump or print_r tussen PRE tags om te meer duidelijkheid te scheppen maar als ik mij niet vergis heb je met een multidimensional array te maken met meerdere array’s binnen een array’s dus de DATA die je wilt gebruiken zit veel dieper dan je in de eerste loop eruit krijgt.

     

    Mijn gedachte was dus om een dubbele foreach() loop te maken. De superglobal $_POST is al een array dus die haal ik door de eerste foreach() maar dan.. Volgens mij is $items dan geen array meer, na die eerste stap. Dan zit je op het niveau van de optgroup (HTML) dus Macs, iPads en iPhones. een laag dieper zitten de items die ik wil hebben dus gebruik ik nog eens een foreach() loop.

    Ik krijg nu een warning op de tweede loop.

    Warning: Invalid argument supplied for foreach()

     

    Dit heeft volgens mij te maken met het feit dat er op de plaats van $items een array wordt verwacht maar dat geen array is.

     

    Nu kan ik dit heel simpel Googlen en via StackOverflow het eerste groene pijltje kopiëren en plakken, dat zal het waarschijnlijk heel goed functioneren maar dat kan ik het later nog steeds niet tijdens het examen. Ik wil het leren begrijpen.

     


    Bijdrager
    pruus

    Hè Schmoo: kortere uitleg met voorbeeld kan bijna niet, https://stackoverflow.com/questions/42330991/how-to-get-key-of-multidimensional-array-in-foreach-loop-using-php


    Bijdrager
    milo526

    in je eerste foreach itterate je over $_POST ipv over $_POST[‘devices’]. $_POST bevat veel meer dan alleen je devices. Je $_POST[‘devices’] zal dan een 2 dimensional array zijn. [[‘iMac Pro’ => ‘iMac_Pro’]] zou je bijvoorbeeld kunnen vinden.

    Dus pas je eerste loop aan om de correcte data te gebruiken en je zou al een stuk verder moeten kunnen komen.

    Verder nog als tip, gebruik foreach($items as $key => $value) om van je device de humanreadable versie te krijgen als key en de computer readable version as value.


    Bijdrager
    Shmoo

    Dus pas je eerste loop aan om de correcte data te gebruiken en je zou al een stuk verder moeten kunnen komen.

    Daar was ik dus opzoek naar… 👍

     

    Ik heb het nu zo opgebouwd en alles werkt volgens de huiswerkopdracht.

     

    Mijn leerkracht zei ook al dat ik vaker $key and $value moest gebruiken. 🤓

     

     

    BEDANKT!


    Bijdrager
    milo526

    Kijk, al een stuk beter, klein puntje nog.

    Ben je bekent met het principe DRY? “Don’t repeat yourself” Als je kijkt naar je binnenste if statement en specifiek het else blok zie je dat de foreachloop in beide gelijk is, dit kan je buiten je if-statement trekken:

    $devices = $_POST[‘devices’];

    if(in_array(balblabla){

    echo “iets leuks”;

    }

    foreach( key value dingetje) {

    echo value en br

    }


    Bijdrager
    Shmoo

    Klopt, je hebt gelijkt, die else is een beetje overbodig want links of rechtsom ik moet toch het lijstje genereren. Dan kan ik ‘m maar beter er meteen achteraan plakken. 😅

     


    Bijdrager
    Rick

    PHP brrr🤢


    Bijdrager
    Shmoo

    Ik vind het wel een van de mooiste talen in opbouw en structuur. Qua uitstraling zou het echt wel een Megan Fox zijn, schat ik zo in.

     

    Als je kijkt naar de vele programmeertalen dan kom je niet veel dan een Helen Mirren of Judi Dench.

     

    Dat staat natuurlijk los van het feit dat ik PHP waarschijnlijk nooit (meer) ga gebruiken in de praktijk.


    Bijdrager
    Rick

    Dat bedoel ik. Wordt door meeste ontwikkelaars ook niet meer aangeraden om te leren


    Bijdrager
    TheBigZ

    Recent bericht:

    https://thephp.cc/news/2018/10/the-future-of-zend

     

    Last week, Zeev Suraski, Matthew Weier O’Phinney, Enrico Zimuel and Dmitry Stogov, all well-known members of the international PHP community, announced that they will leave Zend, which has been part of Rogue Wave since 2015.

     

    The stated reason is Rogue Wave’s strategic decision to focus on the development of Zend Server. If you read between the lines, this implies that Rogue Wave is not going to continue or support the development of the Zend Engine (the core of PHP responsible for compiling and executing code), their IDE Zend Studio, and Zend Framework.

     

     

    Ook recent:

    PHP is dead…Viva le PHP!

     

     

     

10 berichten aan het bekijken - 1 tot 10 (van in totaal 10)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.