1 2 3 4 5 6 7 8 9 | <?php private function _exist($instanceType, $values = array()) { foreach($this->data as $data) { if($data instanceof $instanceType) { //hier moet ik dus values matchen! } } } ?> |
1 2 3 4 5 | <?php if($this->_exist("user", array("getName" => "Henk", "getStatus" => 1)) { //exist! } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 | <?php private function _exist($instanceType, $values = array()) { foreach($this->data as $data) { if($data instanceof $instanceType) { foreach($values as $key => $value) { if($data->$key() === $value) //exist! } } } } ?> |
even heel snel naar gekeken, maar kan je geen in_array() gebruiken?quote:Op woensdag 29 februari 2012 13:50 schreef mafkees10 het volgende:
Misschien iets te geavanceerd, maar ik vraag het toch want het lukt me maar niet Ik weet dat hier ook wel wat goeroes zitten
Ik heb een array met objecten. D.m.v. een functie _exist() wil ik kijken of een object aan meerdere condities voldoen. De functie _exist is als volgende:
[ code verwijderd ]
Ik wil dus een object tegen meerdere condities gelijkertijd! matchen en dat object terugkrijgen. De functie roep ik zo aan:
[ code verwijderd ]
De key in de array is de functienaam, the value in de array is de waarde.
Hoe kan ik ervoor zorgen dat ik het object terugkrijg die aan alle waarden in de array matcht? Ik dacht aan
[ code verwijderd ]
Echter, het nadeel van bovenstaande is dat hij één voor één matcht en niet tegelijkertijd. Het resultaat is nooit zoals het moeten want meerdere objecten kunnen dezelfde waarde hebben. Ik moet dus de operator && gebruiken in de if constructie, maar ik zie hem niet. Iemand een idee hoe ik makkelijk de waarden kan testen? Ik moet een foreach in een foreach juist vermijden, dus als iemand tips heeft Graag!
1 2 3 | <?php if(in_array($data->$key(), $values) ?> |
in_array controleert of de opgegeven waarde voorkomt in de array (ja je zou kunnen zeggen dat hij hem doorloopt).quote:Op woensdag 29 februari 2012 13:54 schreef mafkees10 het volgende:
Kan ik even testen ja! maar loopt die dan de array door? Het probleem is dus dat ik de code nu niet ter beschikking heb (pas vrijdag weer ) en dus niets kan testen voor nu. Ik kan het vrijdag even gaan testen iig!
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 | <?php $footercolumn=get_option('footercolumn'); echo '<div id="panel_widget">'; echo '<div id="panel_wrapper">'; echo '<div class="panel">'; if($footercolumn == '5') { $footerclass="one_fifth"; } if($footercolumn == '4') {$footerclass="one_fourth";} if($footercolumn == '3') { $footerclass="one_third"; } if($footercolumn == '2') {$footerclass="one_half"; } if($footercolumn == '1') { $footerclass="fullwidth"; } for($fc=1; $fc<=$footercolumn; $fc++) { $last = ($fc == $footercolumn and $footercolumn != 1) ? 'last' : ''; ?> <div class="<?php echo $footerclass; ?> <?php echo $last; ?>"> <?php if ( !function_exists('dynamic_sidebar')|| !dynamic_sidebar('top_togglebox_column_'.$fc.'') ) : ?> <h3> <?php _e( ' Toggle Box Column '.$fc.'', 'Apogee' ); ?> </h3> <p> <?php _e( 'Wesce sit amet porttitor leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Quisque interdum, nulla sit amet varius dignissim Vestibulum pretium risus. <a href="#"> View More »</a>', 'Apogee' ); ?> </p> <?php endif; ?> </div> <?php } echo '</div>'; echo '</div>'; ?> <!-- The tab on top --> <div class="tab"> <ul class="login"> <li id="toggle"> <a id="open" class="open" href="#"></a> <a id="close" style="display: none;" class="close" href="#"></a> </li> </ul> </div> </div> |
1 2 3 4 5 6 7 | <?php if($footercolumn == '5') { $footerclass="one_fifth"; } if($footercolumn == '4') {$footerclass="one_fourth";} if($footercolumn == '3') { $footerclass="one_third"; } if($footercolumn == '2') {$footerclass="one_half"; } if($footercolumn == '1') { $footerclass="fullwidth"; } ?> |
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 | <?php $footercolumn=get_option('footercolumn'); echo '<div id="panel_widget">'; echo '<div id="panel_wrapper">'; echo '<div class="panel">'; for($fc=1; $fc<=$footercolumn; $fc++) { $last = ($fc == $footercolumn and $footercolumn != 1) ? 'last' : ''; ?> <div class="<?php echo $footerclass; ?> <?php echo $last; ?>"> <p>Dit is slechts 1 regel tekst, maar verschijnt hier 4 keer</p> </div> <?php } echo '</div>'; echo '</div>'; ?> <!-- The tab on top --> <div class="tab"> <ul class="login"> <li id="toggle"> <a id="open" class="open" href="#"></a> <a id="close" style="display: none;" class="close" href="#"></a> </li> </ul> </div> </div> |
1 2 3 | <?php for($fc=1; $fc<=$footercolumn; $fc++) ?> |
welk knopje verspringt ?quote:Op woensdag 29 februari 2012 16:32 schreef Mirel het volgende:
Ah ok, ik had ook wat er na komt verwijderd en toen flipte alles. Maar ok, die regel is weg.
edit: als ik dus die ene netgenoemde echo weghaal, dan gaat de tekst waar ik het wil hebben, linksboven, maar het knopje verspringt dan. Is het vanaf dit moment nog een PHP issue of CSS?
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 | <?php $footercolumn=get_option('footercolumn'); echo '<div id="panel_widget">'; echo '<div id="panel_wrapper">'; { $last = ($fc == $footercolumn and $footercolumn != 1) ? 'last' : ''; ?> <div class="<?php echo $footerclass; ?> <?php echo $last; ?>"> <iframe width="900" height="400" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" data-src="http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=filmdepartment.nl,+Ondiep-Zuidzijde,+Egelantierstraat-Mari%C3%ABndaalstraat,+Utrecht,+Nederland&aq=0&oq=filmdepartment&sll=37.0625,-95.677068&sspn=44.47475,107.138672&ie=UTF8&hq=filmdepartment.nl,&hnear=Ondiep-Zuidzijde,+Noordwest,+Utrecht,+The+Netherlands&t=h&ll=52.102644,5.097678&spn=0.005272,0.019333&z=16&iwloc=A&output=embed" style="visibility:hidden;"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=filmdepartment.nl,+Ondiep-Zuidzijde,+Egelantierstraat-Mari%C3%ABndaalstraat,+Utrecht,+Nederland&aq=0&oq=filmdepartment&sll=37.0625,-95.677068&sspn=44.47475,107.138672&ie=UTF8&hq=filmdepartment.nl,&hnear=Ondiep-Zuidzijde,+Noordwest,+Utrecht,+The+Netherlands&t=h&ll=52.102644,5.097678&spn=0.005272,0.019333&z=16&iwloc=A" style="color:#0000FF;text-align:left">View Larger Map</a></small> </div> <?php } echo '</div>'; echo '</div>'; ?> <!-- The tab on top --> <div class="tab"> <ul class="login"> <li id="toggle"> <a id="open" class="open" href="#"></a> <a id="close" style="display: none;" class="close" href="#"></a> </li> </ul> </div> </div> |
Daar heb ik ook aan gedacht, maar misschien denk ik weer te moeilijk! Vrijdag even controleren dus! Bedanktquote:Op woensdag 29 februari 2012 13:56 schreef remi1986 het volgende:
[..]
in_array controleert of de opgegeven waarde voorkomt in de array (ja je zou kunnen zeggen dat hij hem doorloopt).
http://php.net/manual/en/function.in-array.php
De functie _exist is voor zover ik weet geen standaard PHP functie. Dus ik ben wel benieuwd wat de implementatie is. Kun je die hier eens posten (en dan tussen [php] en [/php] om de code leesbaar te houden).quote:Op woensdag 29 februari 2012 17:32 schreef mafkees10 het volgende:
[..]
Daar heb ik ook aan gedacht, maar misschien denk ik weer te moeilijk! Vrijdag even controleren dus! Bedankt
Ik zit me net te bedenken dat dit niet klopt.
Stel ik heb een object user met daarin:
private $pass;
private $name;
private $status;
en de drie getters.
Als ik vervolgens:
_exist("user", array("getPass" => "test", "getName" => "test")) dan returnt hij bij getPass al true indien het wachtwoord "test" is. De getName wordt dan dus genegeerd! Als ik de uitkomst van de functie in een array stop, dan krijg ik een andere user die ook het wachtwoord "test" heeft maar met de naam "henk" ook terug. Dat is niet de bedoeling dus. Als ik de uitkomst in een variable stop krijg ik de laatste user terug die als wachtwoord test heeft. Beide niet goed dus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php private function _exist($instanceType, $values = array()) { $result = array(); foreach($this->data as $data) { if($data instanceof $instanceType) { foreach($values as $key => $value) { // We nemen aan dat alles klopt, daarna gaan we controleren. $found = true; if($data->$key() !== $value) { $found = false; break; } if($found) { $result[] = $data; } } } } return $result; } ?> |
Matcht ook niet Ben net ook al bezig geweest maar ik heb maar een lijntje op twiekerts gegooid. Dit grapje heeft me flink wat tijd gekostquote:Op woensdag 29 februari 2012 20:53 schreef Light het volgende:
Ah, zover had ik niet terug gelezen.
[ code verwijderd ]
Zoiets zou het dan worden, denk ik.
Nog nooit met namespaces gewerkt bij PHP, dat moet ik uitdokterenquote:Op woensdag 29 februari 2012 23:21 schreef totalvamp het volgende:
Heeft iemand hier al gewerkt met namespaces? Ik ben momenteel nog aan het inlezen erover en wil ze gaan gebruiken in mijn aankomende projecten.
Daar ben ik ook al mee bezig. Ik volg de spelregels die ik in een programmeerboek heb gevonden, daarbuiten sla ik scripts op in aparte mappen.quote:Wat ik wil gaan maken is een standaard MVC, maar dan met niet al te veel opties en dingen die ik zelf nooit gebruik. Het wordt aangeraden toch wel te beginnen hiermee.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |