Variable Grösser / Kleiner Abfrage

sandroP

Erfahrenes Mitglied
Hallo,
ich möchte eine variable grösser-kleiner Abfrage machen aber es geht eben nicht.

So gehts nicht:
PHP:
	if ($zeile[anzahl] $gr_kl "$menge")

So gehts:
PHP:
	if ($zeile[anzahl] <= "$menge")


Ich will aber, daß die Version mit $gr_kl geht. Wo liegt denn der Fehler?



Grüsse
 
Der Fehler liegt darin, dass die Version mit $gr_kl einfach nicht in PHP möglich ist und ich auch keine andere Programmiersprache kenne in der so etwas möglich ist.
 
Die Variable $gr_kl kann einmal "<=" und einmal ">=" enthalten.

- Du meinst, ich kann ein Vergleichszeichen nicht mittels Varible einfügen?
:(
 
Logische Operanden in eine Variable packen ist mir auch neu. Eine Möglichkeit wäre, die String-Operanden-Abfrage in einer Funktion durchzuführen und das Ergebnis als bool true oder false dann in If zu benutzen.

Nachtrag: Meine Idee wäre also
PHP:
function IstEs ($dataA,$operand,$dataB) 
{
  if($operand=="<=")
  {
     if($dataA<=$dataB) ? return true:return false;
  }else{
     if($dataA>=$dataB) ? return true:return false;
  }
}

//Abfrage sieht dann so aus:

if( IstEs($zeile[anzahl],$gr_kl,$menge) )
{
  ...
}


mfg chmee
 
Hallo,

man muss das ganze halt einfach „zu Fuß“ machen:
PHP:
if (($gr_kl == "<=" && $zeile['anzahl'] <= $menge) ||
    ($gr_kl == ">=" && $zeile['anzahl'] >= $menge)) {
    …
}
Oder kürzer (wenn man sicher sein kann, dass $gr_kl wirklich entweder "<=" oder ">=" ist):
PHP:
if (($gr_kl == "<=") ? $zeile['anzahl'] <= $menge :
                       $zeile['anzahl'] >= $menge) {
    …
}

Grüße, Matthias
 
Die Lösungen sind sehr gut..
Was du aber auf alle Fälle nicht nutzen solltest ist sowas hier:

PHP:
  $code=" echo \"hey, geht ;)\";";
  eval("if($zeile[anzahl] $gr_kl $menge){ $code }");

So gehts zwar auch allerdings bietet eval() ne Menge Angriffsmöglichkeiten für deinen Code wenn du zB die Usereingaben nicht richtig abfängst..
 
Vielen Dank für eure Antworten.
Dann werde ich die Sache also mit "if/else" lösen.

Wünsche euch ein sonniges Wochenende!
 
Zurück