array vraag
Hallo,
Ik heb een functie waar ik keys wil ingeven en waarbij ik op basis van die keys key/value paren wil terugkrijgen. Een voorbeeldje
Hier komt een array uit met deze inhoud:
Echter, ik wil dat er dit uitkomt:
Hoe doe ik dat het handigst?
Ik heb een functie waar ik keys wil ingeven en waarbij ik op basis van die keys key/value paren wil terugkrijgen. Een voorbeeldje
Code (php)
Hier komt een array uit met deze inhoud:
Echter, ik wil dat er dit uitkomt:
Hoe doe ik dat het handigst?
Of het 'handigst' is weet ik niet, maar bijvoorbeeld:
Volgens mij moet je de parameters omdraaien dus:
return array_intersect_key( $data , array_flip($keys_to_check) );
return array_intersect_key( $data , array_flip($keys_to_check) );
Bedankt voor jullie reacties. De oplossing van TJVB werkt prima!!!
(@Erwin: ik probeer uit performance oogpunt altijd om foreach loops te voorkomen voor dit soort functies.)
(@Erwin: ik probeer uit performance oogpunt altijd om foreach loops te voorkomen voor dit soort functies.)
Offtopic:
(merk op dat deze functies binnenin ook gewoon (meerdere) for(each) loops gebruiken)
(merk op dat deze functies binnenin ook gewoon (meerdere) for(each) loops gebruiken)
Wouter J op 05/03/2013 18:52:57:
Offtopic:
(merk op dat deze functies binnenin ook gewoon (meerdere) for(each) loops gebruiken)
(merk op dat deze functies binnenin ook gewoon (meerdere) for(each) loops gebruiken)
Verpest het nou niet voor me! ;)
Toch heb ik het idee, dat dit nog wel altijd sneller gaat dan zelf een foreach uitschrijven.
Door een array lopen zonder een loop is onmogelijk, dus die foreach loop vermijden heeft alleen nu als je het door jezelf geschreven regels code wilt verkleinen.
En in dit geval, array_intersect_key en array_flip moet door een array wandelen. Ik vraag me af wat je nu dus probeert te voorkomen....
PS. mijn ervaring is dat over het algemeen de php array functies behoorlijk traag zijn, dus die continu gebruiken is zeker geen garantie voor een betere performance.
En in dit geval, array_intersect_key en array_flip moet door een array wandelen. Ik vraag me af wat je nu dus probeert te voorkomen....
PS. mijn ervaring is dat over het algemeen de php array functies behoorlijk traag zijn, dus die continu gebruiken is zeker geen garantie voor een betere performance.
Gewijzigd op 05/03/2013 18:57:33 door Erwin H
Ah oke... ik dacht dat dit de snelste oplossing. Volgens mij is het wel sneller dan een handmatige loop, maar dat zou ik moeten benchmarken.
Toevoeging op 05/03/2013 19:08:35:
Snel even benchmark gedaan. De niet-foreach variant is ietsje sneller. Het verschil wordt duidelijker naarmate de array uitgebreider wordt.
Toevoeging op 05/03/2013 19:08:35:
Snel even benchmark gedaan. De niet-foreach variant is ietsje sneller. Het verschil wordt duidelijker naarmate de array uitgebreider wordt.



