Ik kom er echt niet uit en ik hoop dat jullie mij hulp kunnen bieden. Dit probleem is vrij complex (vind ik dan
) en ik krijg het maar niet voor elkaar; daarom vraag ik jullie hulp nog maar een keer.
Ik heb een array met objecten. Wat ik wil is kijken of een object in de array bepaalde waarden heeft.
Hiervoor heb ik een functie _exist() maken met 2 parameters. (1) het type object, (2) de condities in een array.
Ik wil de functie zo gebruiken:
De array die ik wil gebruiken is dynamisch. Als eerst geef ik het type object mee en daarna een array met waarden. Soms bevat de array 1 key, soms zijn er 3 keys. De key van de array is de functienaam van de class, de value van de array is de waarde die moet kloppen.
Nu dacht ik:
Dit klopt echter niet, want ik krijg meerdere objecten. Logisch, want er wordt per stuk gekeken (eigenlijk een OR conditie door de loop) of iets overeen komt, en ik wil alles matchen (AND dus). Is dit mogelijk? Keer op keer kom ik op een foreach in een foreach uit, maar dit zorgt dus juist voor de problemen. Kan iemand een tipje geven hoe dit gerealiseerd kan worden? Het lukt me echt niet en ik heb al de meest achterlijke dingen geschreven, maar dat is zo brak dat het ik het liever niet wil. Wat is hier de sleutelfunctie/sleutelwoord?
Ik zat te denken om op de remainingObjects verder te foreachen, maar deze begint natuurlijk weer doodleuk vooraan in de array. Moet ik de array pointer opschuiven b.v. met array_shift en dan een nieuwe loop creëren? Ik kom er echt niet meer uit
Ik heb een array met objecten. Wat ik wil is kijken of een object in de array bepaalde waarden heeft.
Hiervoor heb ik een functie _exist() maken met 2 parameters. (1) het type object, (2) de condities in een array.
Ik wil de functie zo gebruiken:
PHP:
1
2
3
4
5
| if($this->_exist("user", array("getName" => "Henk", "getStatus" => 1, "getEmail" => "test@test.nl"))) { //bestaat } else { //bestaat niet! } |
De array die ik wil gebruiken is dynamisch. Als eerst geef ik het type object mee en daarna een array met waarden. Soms bevat de array 1 key, soms zijn er 3 keys. De key van de array is de functienaam van de class, de value van de array is de waarde die moet kloppen.
Nu dacht ik:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| private function _exist($instanceType, $values = array()) { foreach($this->objects as $object) { if($object instanceof $instanceType) { foreach($values as $key => $value) { if($object->$key() === $value) { $remainingObjects[] = $object; } } } } } |
Dit klopt echter niet, want ik krijg meerdere objecten. Logisch, want er wordt per stuk gekeken (eigenlijk een OR conditie door de loop) of iets overeen komt, en ik wil alles matchen (AND dus). Is dit mogelijk? Keer op keer kom ik op een foreach in een foreach uit, maar dit zorgt dus juist voor de problemen. Kan iemand een tipje geven hoe dit gerealiseerd kan worden? Het lukt me echt niet en ik heb al de meest achterlijke dingen geschreven, maar dat is zo brak dat het ik het liever niet wil. Wat is hier de sleutelfunctie/sleutelwoord?
Ik zat te denken om op de remainingObjects verder te foreachen, maar deze begint natuurlijk weer doodleuk vooraan in de array. Moet ik de array pointer opschuiven b.v. met array_shift en dan een nieuwe loop creëren? Ik kom er echt niet meer uit
[ Voor 6% gewijzigd door ID-College op 29-02-2012 23:12 ]