1. #1
    Avatar von Benzol
    Registriert seit
    16.12.2013
    Beiträge
    215
    Thanked 87 Times in 54 Posts

    Standard 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:

    Notice: Undefined index: limit in /home/demo.php on line 4
    Ganz einfaches Beispiel:

    PHP-Code:
    my_function($_GET["limit"]);

    function 
    my_function($limit){
        if(
    $limit == null || $limit 0){
            
    $limit 5;
        }
        
    //Funktionslogik

    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:
    $limit 0;
    if(isset(
    $_GET["limit"])){
        
    $limit $_GET["limit"];

    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.

    Über ein anderes Thread hier habe ich diesen Weg gefunden:

    PHP-Code:
    $limit = isset($_GET["limit"]) ? $_GET["limit"] : null
    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.
    Das könnte man sich natürlich selbst basteln:

    PHP-Code:
    function get_if_set($name){
        
    $value null;
        if(isset(
    $_GET[$name])){
            
    $value $_GET[$name];
        }
        return 
    $value;

    Und dann ganz easy benutzen, etwa so:
    PHP-Code:
    my_function(get_if_set("limit")); 
    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:
    $limit = isset($_GET["limit"]) ? $_GET["limit"]; 
    Leider habe ich vergessen wie es heißt und google scheint ?: nicht zu mögen, finde nicht was ich suche

  2. #2
    Avatar von NekkoDE
    Registriert seit
    19.02.2015
    Beiträge
    14
    Thanked 12 Times in 7 Posts

    Standard AW: Wie am besten prüfen ob Variable gesetzt?

    Leider habe ich vergessen wie es heißt und google scheint ?: nicht zu mögen, finde nicht was ich suche
    Was du hier machst, nennt sich ternärer Operator (ternary operator):

    PHP-Code:
    $limit = isset($_GET['limit']) ? $_GET['limit'] : 0
    Das was du willst, ist einfach nur eine Kurzform davon:

    PHP-Code:
    $limit = isset($_GET['limit']) ?: 0
    Problem hierbei ist, er nimmt das Ergebnis von isset() als Wert für $limit, also 1 oder 0 (true/false).

    Ich hab mal nachgeschaut und bin auf das hier gestoßen:
    PHP-Code:
    $limit = @$_GET['limit']?: 0
    Das ist quasi ein "Nimm-entweder-aus-GET-und-ignorier-Fehler,-oder-setz-0-Ansatz".

    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)

  3. The Following User Says Thank You to NekkoDE For This Useful Post:

    Benzol (24.02.2015)

  4. #3

    Registriert seit
    17.12.2011
    Beiträge
    97
    Thanked 37 Times in 27 Posts

    Standard 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 Integer
    Geändert von Integer (23.02.2015 um 11:58 Uhr)

  5. #4
    Avatar von Benzol
    Registriert seit
    16.12.2013
    Beiträge
    215
    Thanked 87 Times in 54 Posts

    Standard 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

  1. Globale Variable ohne Kapselung
    Von Jokuu im Forum PHP
    Antworten: 2
    Letzter Beitrag: 18.07.2014, 15:02
  2. Antworten: 5
    Letzter Beitrag: 31.12.2013, 15:01
  3. Besten Tarif zum besten Preis?
    Von aquastar im Forum Mobilgeräte
    Antworten: 20
    Letzter Beitrag: 27.06.2013, 22:23
  4. Antworten: 2
    Letzter Beitrag: 19.03.2013, 19:35
  5. Kommentare prüfen
    Von !lkay im Forum PHP
    Antworten: 3
    Letzter Beitrag: 12.07.2012, 21:11
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.