Hallo
eines Vorweg: Da ich für ein großes Unternehmen arbeite kann
ich euch keine Quelltexte geben, Datenschutz. Ihr müsst ein
wenig mehr eure Fantasie bemühen als sonst. TUt mir Leid
Oha!
ich habe eine Variable $suchkategorie, die, je nach
übergebenem Wert im switch-case, unterschiedliche Inhalte hat.
Jetzt möchte ich unterschiedliche Select-Strings haben, je
nachdem, ob nach IP-Adresse Oder Hostname gesucht wird, oder
nach Seriennummer, Systembetreuer etc.
Das ganze sieht bisher so aus:
if ($suchkategorie == „tcpipaddress“ || „dnsname“) {
Anweisungen
} else {
Anweisungen}
Aber irgendwie kümmert es ihn nicht ob es ne IP, n DNS name
oder eben eine Seriennummer, ein Betreuer etc ist.
Er spuckt IMMER alles raus was er an Infos hat.
nimmt er das „|| ‚dnsname‘“ nicht?
Oje! Wenn Du drei Operatoren auf einer Zeile hast,
musst Du mal schauen, was die „Präzedenz“ ist.
(http://www.phpbuilder.com/manual/en/language.operato…)
Präzedenz von == ist höher als ||, daher folgende
Bedeutung:
$a = $suchkategorie == "tcpipaddress"
$b = $a || "dnsname"
if($b) {
...
Korrekt wäre hier wahrscheinlich:
if($suchkategorie=="tcpipaddress" || $suchkategorie=="dnsname") {
...
Besser: einen Hash (assoziatives Array) mit
den Schlüsselwörtern als Keys und den geforderten
Funktionen als Elemente (Funktionstabelle):
$globaler\_parameter = 3;
$table = Array(
'tcpipaddress' =\> create\_function('$param', '
global $globaler\_parameter;
return $param + 0.5\*$param\*$param - $globaler\_parameter;'
),
'dnsname' =\> create\_function('$param', '
global $globaler\_parameter;
return $param - 0.5\*$param\*$param + $globaler\_parameter;'
),
// ... weitere keys eingeben
);
$suchkategorie = 'tcpipaddress';
$parameter = 21;
if(array\_key\_exists($suchkategorie, $table)) {
$resultat = $table[$suchkategorie]( $parameter );
}
else {
$resultat = "'$suchkategorie' gibbs nich!";
}
echo $resultat;
Grüße
CMБ