Benzol (24.02.2015)
-
23.02.2015, 01:06 #1
Wie am besten prüfen ob Variable gesetzt?
Nabend,
ich möchte ein Funktion aufrufen, die Parameter per GET bekommen kann. Betonung liegt auf kann, denn die Funktion ist bereits so programmiert, dass sie automatisch Standardwerte benutzt wenn der übergebene Parameter nicht gesetzt ist. Wenn ich einfach $_GET["name"] übergebe funktioniert das auch wenn der Parameter gesetzt ist, aber wenn er das nicht ist bekomme ich eine Warnung:
Ganz einfaches Beispiel:Notice: Undefined index: limit in /home/demo.php on line 4
Da ich ja eine Warnung kriege sollte man das wohl eher nicht so machen, auch wenn es funktioniert. Ich habe herausgefunden, dass ich den Fehler mit @$_GET["limit"] unterdrücken kann. Aber Fehler zu unterdrücken scheint mir vom Gedankengang her keine so gute Idee zu sein, daher würde ich das gerne anders machen. Eine If Abfrage würde genügen, so was hier also:PHP-Code:my_function($_GET["limit"]);
function my_function($limit){
if($limit == null || $limit < 0){
$limit = 5;
}
//Funktionslogik
}
Mein Problem mit dieser Lösung ist, dass sie nicht schlank ist und meine Funktionen 5 Parameter und mehr haben, das heißt ich habe da schnell eine halbe Seite solcher Abfragen... nicht so toll.PHP-Code:$limit = 0;
if(isset($_GET["limit"])){
$limit = $_GET["limit"];
}
Über ein anderes Thread hier habe ich diesen Weg gefunden:
Schon besser, aber immer noch einiges an Code der sich wiederholt! Ich suche etwas kürzeres, das prüft ob der Index gesetzt ist, wenn ja soll er mir den Index ausgeben, wenn nein einen Standardwert.PHP-Code:$limit = isset($_GET["limit"]) ? $_GET["limit"] : null;
Das könnte man sich natürlich selbst basteln:
Und dann ganz easy benutzen, etwa so:PHP-Code:function get_if_set($name){
$value = null;
if(isset($_GET[$name])){
$value = $_GET[$name];
}
return $value;
}
Nur finde ich es ein bisschen Unflexibel, mich nun daran zu gewöhnen und diese Funktion überall in jedes neue Projekt was mit GET zutun hat reinzukopieren... Gibt es da nichts in PHP eingebautes? Ich hatte mal in einem Php-Magazin gelesen dass so was in der Art eingeführt werden soll, und zwar sah es wie eine vereinfachte form von ?: aus, also dass der 1. doppelt vorhandene Teil wegkommt ähnlich wie so:PHP-Code:my_function(get_if_set("limit"));
Leider habe ich vergessen wie es heißt und google scheint ?: nicht zu mögen, finde nicht was ich suchePHP-Code:$limit = isset($_GET["limit"]) ? $_GET["limit"];
-
23.02.2015, 11:55 #2
AW: Wie am besten prüfen ob Variable gesetzt?
Was du hier machst, nennt sich ternärer Operator (ternary operator):Leider habe ich vergessen wie es heißt und google scheint ?: nicht zu mögen, finde nicht was ich suche
Das was du willst, ist einfach nur eine Kurzform davon:PHP-Code:$limit = isset($_GET['limit']) ? $_GET['limit'] : 0;
Problem hierbei ist, er nimmt das Ergebnis von isset() als Wert für $limit, also 1 oder 0 (true/false).PHP-Code:$limit = isset($_GET['limit']) ?: 0;
Ich hab mal nachgeschaut und bin auf das hier gestoßen:
Das ist quasi ein "Nimm-entweder-aus-GET-und-ignorier-Fehler,-oder-setz-0-Ansatz".PHP-Code:$limit = @$_GET['limit']?: 0;
Kann man für sich selbst machen, in einem ernstgemeintem Projekt würde ich sowas aber eher nicht verwenden.
Quelle: stackoverflow
Mfg,
David.Geändert von NekkoDE (23.02.2015 um 11:56 Uhr)
-
The Following User Says Thank You to NekkoDE For This Useful Post:
-
23.02.2015, 11:56 #3Nachrichtendienst
- Registriert seit
- 17.12.2011
- Beiträge
- 152
Thanked 87 Times in 60 Posts
AW: Wie am besten prüfen ob Variable gesetzt?
Ich glaube wonach du suchst ist die Switch-Anweisung.
Switch und Case.
PHP: switch - Manual
Mfg IntegerGeändert von Integer (23.02.2015 um 11:58 Uhr)
-
24.02.2015, 01:46 #4
AW: Wie am besten prüfen ob Variable gesetzt?
Nein kein Switch, was soll mir das bringen? Ich muss testen ob der Parameter gesetzt ist, und genau das tut Switch nicht. Außerdem wird der Code nicht kompakter sondern eher aufgeblähter, ich suche ja eine kompaktere Alternative zu der If Bedingung.
NekkoDE hat es richtig erkannt, was ich gesucht habe ist sein 2. Beispiel, aber das geht ja wie er bereits erklärt hat leider nicht in der Form, weil der Rückgabewert der Prüfung genutzt wird.
Falls jemandem noch was einfällt kann er das ja gerne sagen, aber es scheint mir als ob wohl kein Weg daran vorbeiführt selbst eine Funktion zu schreiben die dann halt überprüft ob der Index gesetzt ist.
Ähnliche Themen
-
Globale Variable ohne Kapselung
Von Jokuu im Forum PHPAntworten: 2Letzter Beitrag: 18.07.2014, 15:02 -
C# Fragen: Variable außerhalb von If nicht verfügbar
Von Gast78236 im Forum AndereAntworten: 5Letzter Beitrag: 31.12.2013, 15:01 -
Besten Tarif zum besten Preis?
Von aquastar im Forum MobilgeräteAntworten: 20Letzter Beitrag: 27.06.2013, 22:23 -
[Frage]Bildausgabe mit Variable als Bildname (Php/Html)
Von Marvin im Forum PHPAntworten: 2Letzter Beitrag: 19.03.2013, 19:35 -
Kommentare prüfen
Von !lkay im Forum PHPAntworten: 3Letzter Beitrag: 12.07.2012, 21:11
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.
Zitieren