Viele variablen

hallo,

ich bin recht neu und erst seit kurzem beschäftige ich mich mit php. das hat zur folge, dass ich oftmals ein problem löse, und dann später feststelle, dass es viel bessere wege gibt. nicht selten finde ich die lösung für einen code, in dem ich 15 - 20 zeilen gebraucht habe, in wenigen zeilen (also besser!) gelöst. manchmal denke ich halt zu kompliziert und manchmal weiss ich einfach auch nicht, dass es für genau dieses problem schon eine funktion gibt, die es löst oder zumindest doll weiterhilft.

diesmal soll mir das´nicht passieren. ich kann mir für mein problem zwar eine lösung denken, die wäre aber mal wieder schätzungsweise 20 zeilen lang. gehts auch besser?

das problem: gegeben seien viele variablen (alles strings, anzahl > 40) und eine bedingung, die besagt: sei wahr, wenn alle variablen den einen oder anderen wert haben, sei unwahr, wenn mindestens eine variable einen anderen als genau diese beiden werte hat.

also:

$eins
$zwei
$drei
(…)

seien strings. inhalt sei entweder (1) „inhalt 1“ oder (2) „inhalt 2“ oder (3) (4) (5) (…) etwas beliebiges anderes.

wenn keine der variablen einen anderen inhalt hat als (1) oder (2) hat, sei die bedingung erfüllt. dabei ist es egal, wieviele variablen (1) und wieviele (2) als inhalt haben, solange es bloß nicht (3) (…) irgendwo auftaucht.

puh…! ist das verständlich?

so. nun mein erster lösungsansatz wären zigfach verschachtelte if-bedingungen. würde sicher auch funktionieren. aber gibt es keinen besseren weg? zumal der code siche umständlich umgebaut werden muss, wenn ich später feststellen muss, dass noch was dazukommt oder wegfällt.

habt ihr vorschläge?

danke!

lg

kk

doch, das geht auch einfacher… :wink:

speichere Deine Ergebnisse nicht in unterschiedlichen Variablen sondern in einem Array
also etwa so
$ergebnis[‚0‘] = „1“;
$ergebnis[‚1‘] = „2“;
$ergebnis[‚2‘] = „1“;
$ergebnis[‚3‘] = „3“;

anschliessend kannst Du mit passenden array-funktionen alle variablen auf einmal durchgehen.
Für Deinen Fall scheint das aber garnicht nötig zu sein.
Funktion in_array ist das was Du zu brauchen scheinst…

if (in_array(„3“;$ergebnis)) echo „Drei in Array gefunden. Das darf nicht sein!“;

ansonsten könntest Du halt mit einer while-schleife alle Inhalte noch durchgehen - das wäre nötig, wenn Du in sonderfällen eine 3 als Inhalt erlauben würdest…

HTH
Munich

Hallo !

Wenn du das Ganze in einem Array speicherst, sollte es zur Prüfung, ob eine Zahl ungleich deiner 2 Werte (2 und 3 im Beispiel) ist, folgendes tun:

if (array\_reduce($werte, create\_function('$v,$w','return $v + (($w2)&&($w3)):1:0;'), 0)\>0) { ....

Aber du musst deine vielen Variablen auch als Array ( $werte ) gespeichert haben, siehe andere Antwort.

Alexander