Dat snap ik, het ging me vooral om het DRY-karakter en het gebruik van dubbele/enkele quotes.quote:
1 2 3 4 5 6 7 | function checkempty($var){ if(empty($var) ){ echo "$var niet ingevoerd"; } } ?> |
1 2 3 4 5 6 7 8 9 | function ce($var,$dn){ if(empty($var) ){ echo $dn." niet ingevoerd"; } } ce($name,'naam') ?> |
Kan ook, maar wat SuperRembo zegt klopt, ik wil eigenlijk een userfriendly name eruit hebben. Dus nu nog een manier vinden om 10 waardes in te voeren. Ik kan het handmatig doen, dan heb ik 10 regels code. kan het slimmer?quote:Op donderdag 1 mei 2008 18:36 schreef Intrepidity het volgende:
$var is de naam van de variabele toch al?
als je checkempty("blaat") aanroept moet ie checken of $blaat leeg is lijkt me toch?
dan is het
if(empty($$var))
{
// $var nu outputten.. $var uit $$var word dus omgezet naar "blaat" --> $blaat
}
1 2 3 4 5 6 7 8 9 | foreach(not_set( array('var1'=>'naam','var2'=>'lft','var3'=>'tijd','var4'=>'geslacht') as $var ) echo "hee dombo, je hebt '$var' niet gezet!"; function not_set($arr) { $out=array(); foreach($arr as $v=>$x) if(empty($GLOBALS[$v])) $out[]=$x; return $out; } ?> |
Mmm, dat soort code kan ik allemala nietquote:Op donderdag 1 mei 2008 23:05 schreef ralfie het volgende:
umm, waarom niet gwoon een arraytje?
[ code verwijderd ]
mss niet grammaticaal correct, maar het idee klopt toch?
Of gebruik func_get_args() icm met count (of func_num_args()).quote:Op donderdag 1 mei 2008 19:15 schreef SuperRembo het volgende:
Je kunt een functie maken waar je een willekeurig aantal parameters aan mee kunt geven; steeds afwisselend een var en een naam. Daarvoor gebruikt je func_get_arg().
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | function is_empty() { $args = func_get_args(); $result = array(); if (count($args)) { foreach($args as $v) { if (is_array($v)) { $result = array_merge($result, call_user_func_array(__FUNCTION__, $v)); } else { if (empty($GLOBALS[$v])) { $result[] = $v; } } } return $result; } trigger_error(sprintf("%s requires at least 1 parameter\n", __FUNCTION__), E_USER_NOTICE); return $result; } function is_empty_2defaults() { $result = array(); if (func_num_args()) { $args = func_get_args(); foreach($args as $v) { if (!is_array($v)) { continue; } $tmp = is_empty(array_keys($v)); foreach($tmp as $v2) { $GLOBALS[$v2] = $v[$v2]; } $result = array_merge($result, $tmp); } } else { trigger_error(sprintf("%s requires at least 1 parameter\n", __FUNCTION__), E_USER_NOTICE); } return $result; } $test = "test"; $leeg = '0'; $niks = null; $weer_niks; $array = array(); print_r(is_empty("test")); print_r(is_empty("test", "leeg", "niks", "weer_niks", "array")); # Recursieve arrays print_r(is_empty(array(array(0)))); # En als je met hashes gaat werken: $hash = array("var1" => "leeg"); print_r(is_empty(array_values($hash))); # Maar dit mag ook: print_r(is_empty($hash)); $hash = array("glas" => "half vol"); $tmp = is_empty(array_keys($hash)); foreach($tmp as $v) { printf("%s is maar %s", $v, $hash[$v]); } # Als je default waardes wilt hebben voor de lege velden... $hash_defaults = array("user" => "guest", "password" => "guest"); is_empty_2defaults($hash_defaults); printf("User: %-8s\tPassword: %s\n", $user, $password); ?> |
quote:Op vrijdag 2 mei 2008 05:00 schreef slakkie het volgende:
Heb er maar een recursieve functie van gemaakt, accepteerd zowel arrays, als losse scalars. Persoonlijk zou ik er ook nog check bijgooien om te zien of $GLOBALS[$v] ook gelijk is aan 0 aangezien dat ook een boolean value kan zijn.
[ code verwijderd ]
1 2 3 | trigger_error(sprintf("%s requires at least 1 parameter\n", __FUNCTION__, E_USER_NOTICE)); ?> |
Waarom zou je dat überhaupt willen? Als je bij de beker het drank_id opslaat dan kun je altijd de drank_naam weer achterhalen.quote:Op vrijdag 2 mei 2008 12:57 schreef boskameel het volgende:
Stel je voor: Ik heb een klasse die beker heet, en ik heb een klasse die drank heet.
In de klasse beker heb je de volgende vars:
beker_id
beker_inhoud
beker_materiaal
beker_drank
Daarnaast heb ik de klasse drank, met daarin de volgende vars
drank_id
drank_naam
Ik wil een nieuwe beker aanmaken, want ik heb dorst. In het veld beker_drank van de klasse beker komt een waarde, een getal. Dit getal moet overeenkomen met drank_id uit de klasse drank. Wanneer deze overeenkomt, moet de inhoud van drank_naam worden ingevuld in het veld beker_drank. Ik denk dat het wel mogelijk is, maar hoe doe ik dit dan?
Misschien met foreign keys?quote:Op vrijdag 2 mei 2008 13:05 schreef Light het volgende:
[..]
Waarom zou je dat überhaupt willen? Als je bij de beker het drank_id opslaat dan kun je altijd de drank_naam weer achterhalen.
Dan maak je een JOIN over die twee tabellen, als je tenminste wilt weten welke drank er in een beker zit. Zo'n id is een makkelijk, vast punt. Ander voordeel is dat als je "bier" wilt vervangen door "Heineken" (om verwarring met "Grolsch" te voorkomen bijvoorbeeld) dan hoef je dat maar op 1 plek aan te passen.quote:Op vrijdag 2 mei 2008 13:23 schreef boskameel het volgende:
Als ik bv gebruik maak van een database, en een tabel beker en drank heb. Of denk ik nu te moeilijk?
Ja, dan moet je dus die ID's laten staan en niet ineens ID's door namen gaan vervangen. Da's niet logisch. Dat het in PHP kan, komt alleen maar omdat het loosely typed is.quote:
1 2 | echo $test; |
ai ik zie het al, zit met de verkeerde var te spelenquote:Op vrijdag 2 mei 2008 14:14 schreef CraZaay het volgende:
Die code toont bij mij gewoon je string. Als integer (zonder quotes dus) komt 'ie dichter bij jouw weergave in de buurt (1.0305006007E+77).
Hier ook..quote:Op vrijdag 2 mei 2008 14:14 schreef CraZaay het volgende:
Die code toont bij mij gewoon je string. Als integer (zonder quotes dus) komt 'ie dichter bij jouw weergave in de buurt (1.0305006007E+77).
Kan drank bestaan zonder beker?quote:Op vrijdag 2 mei 2008 12:57 schreef boskameel het volgende:
Stel je voor: Ik heb een klasse die beker heet, en ik heb een klasse die drank heet.
In de klasse beker heb je de volgende vars:
beker_id
beker_inhoud
beker_materiaal
beker_drank
Daarnaast heb ik de klasse drank, met daarin de volgende vars
drank_id
drank_naam
Ik wil een nieuwe beker aanmaken, want ik heb dorst. In het veld beker_drank van de klasse beker komt een waarde, een getal. Dit getal moet overeenkomen met drank_id uit de klasse drank. Wanneer deze overeenkomt, moet de inhoud van drank_naam worden ingevuld in het veld beker_drank. Ik denk dat het wel mogelijk is, maar hoe doe ik dit dan?
1 2 3 4 | $flesje = new fles($drankje->get_contents()) $bekertje = new beker(); $bekertje->vul($flesje->get_contents()); |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |