Marco: isset($var1 or $var2)

Hi,

Gibt es eine Möglichkeit bei der Funktion isset() nach zwei oder mehreren (sprich: Array) Parametern abzufragen?

Marco

  1. puts "Hallo " + gets.chomp + "."

    ?> Marco
    => Hallo Marco.

    Gibt es eine Möglichkeit bei der Funktion isset() nach zwei oder mehreren (sprich: Array) Parametern abzufragen?

    isset($foo[0]) or isset($foo[1]) or...

    So in etwa?

    Einen schönen Montag noch.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Day 20: search.ini
    Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
    [Deshalb frei! - Argumente pro freie Software]
    1. andere möglichkeit gibt's nicht?

      1. echo $begrüßung;

        andere möglichkeit gibt's nicht?

        Nein. Was gefällt dir daran nicht?

        echo "$verabschiedung $name";

        1. echo $begrüßung;

          andere möglichkeit gibt's nicht?

          Nein. ...

          Ich muss mich korrigieren. isset() nimmt entgegen meinen Erinnerungen auch mehrere Werte entgegen, die es mit AND verknüpft prüft. Sprich: Alle Werte müssen vorhanden sein, sonst ergibt es false.
          Was aber weiterhin nicht geht, ist, alle Einzelteile von nichtskalaren Variablen (Array, Objekt) in einem Rutsch auf "fehlende Teile" zu prüfen, da sich nicht eindeutig definieren lässt, wie solch ein Fehlteil auszusehen hätte.

          echo "$verabschiedung $name";

      2. Hallo,

        Pseudokot:

        var bla=true;
          foreach( einträge )
          {
            bla=(isset(blub))?bla:false;
          }

        danach kannst du bla überprüfen, wenn es false ist, dann isseten nicht alle variablen.

        gruss

        --
        no strict;
        no warnings;
        Ich weiss es nicht, aber ich bin mir nicht sicher.
        Craptastic.
        1. puts "Hallo " + gets.chomp + "."

          ?> Eternius
          => Hallo Eternius.

          danach kannst du bla überprüfen, wenn es false ist, dann isseten nicht alle variablen.

          ROFL. Standalone ist der Satz für den A... *h*

          Einen schönen Montag noch.

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          30 Days to becoming an Opera8 Lover -- Day 20: search.ini
          Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
          [Deshalb frei! - Argumente pro freie Software]
        2. echo $begrüßung;

          var bla=true;
            foreach( einträge )

          Ein foreach iteriert über alle vorhandenen Array-Werte. Für nicht vorhande Werte gibt es logischerweise auch keinen Schleifendurchlauf. Damit lässt sich nicht auf das (Nicht-)Vorhandensein von Werten prüfen. Wenn diese Prüfung gewünscht ist, dann müsste eine for-Schleife zur Anwendung kommen.

          bla=(isset(blub))?bla:false;

          Hier wäre die Verwendung des Operators |= eleganter.

          echo "$verabschiedung $name";

          1. Servus,

            echo $begrüßung;

            var bla=true;
              foreach( einträge )

            Ein foreach iteriert über alle vorhandenen Array-Werte. Für nicht vorhande Werte gibt es logischerweise auch keinen Schleifendurchlauf. Damit lässt sich nicht auf das (Nicht-)Vorhandensein von Werten prüfen. Wenn diese Prüfung gewünscht ist, dann müsste eine for-Schleife zur Anwendung kommen.

            oh sorry, nein so meinte ich es eigentlich nicht.
              der junge mann wollte (soweit ich das verstanden habe) mehrere einträge im array überpüfen, dann z.b.
              nehmen wir an du hast ein array mit 1-3 vorhanden, 4 nicht.
              pseudo:
              foreach(1,2,3,4 as i){
                 .. array[i] ..
              }

            oder foreach(array[1], array[2], array[3] as i)
                   {
                      .. i ..
                   }

            bla=(isset(blub))?bla:false;

            Hier wäre die Verwendung des Operators |= eleganter.

            stimmt, hab ich aber noch nie benutzt *schnief*.

            gruss

            --
            no strict;
            no warnings;
            Ich weiss es nicht, aber ich bin mir nicht sicher.
            Craptastic.
            1. Hi,

              oh sorry, nein so meinte ich es eigentlich nicht.
                der junge mann wollte (soweit ich das verstanden habe) mehrere einträge im array überpüfen, dann z.b.

              Dann ist isset sowieso falsch. Werte in einem Array sind immer vorhanden, und mit isset prüfst du auf das vorhanden sein.

              1. Hi,

                oh sorry, nein so meinte ich es eigentlich nicht.
                  der junge mann wollte (soweit ich das verstanden habe) mehrere einträge im array überpüfen, dann z.b.

                Dann ist isset sowieso falsch. Werte in einem Array sind immer vorhanden, und mit isset prüfst du auf das vorhanden sein.

                häh?
                  (und diesmal wirklich php)

                  
                  $array = array(1=>1, 5=>1);  
                  foreach(array(1,2,3,4,5) as $i)  
                  {  
                    echo isset($array[$i]) . "\n";  
                  }  
                
                

                ergibt:
                  --
                  1

                1
                  --

                und echo isset($array[1],$array[2]) ergibt wieder nüscht, wohingegen echo isset ($array[1],$array[5]) wieder 1 ergibt.

                gruss

                --
                no strict;
                no warnings;
                Ich weiss es nicht, aber ich bin mir nicht sicher.
                Craptastic.
                1. echo $begrüßung;

                  foreach(array(1,2,3,4,5) as $i)

                  Und damit baust du dir erst einmal ein Referenzarray auf (siehe auch range()), um das zu durchlaufen. Das kannst du mit for($i = 0; $i < max; $i++) einfacher haben.

                  echo "$verabschiedung $name";

                  1. Hi,

                    foreach(array(1,2,3,4,5) as $i)

                    Und damit baust du dir erst einmal ein Referenzarray auf (siehe auch range()), um das zu durchlaufen. Das kannst du mit for($i = 0; $i < max; $i++) einfacher haben.

                    danke, ich werds lesen. ich habe gerade meinen rechner mit php verseucht, noch nie vorher benutzt. ich habe ehrlich gesagt keinen plan und bei php fällt mir das auch sehr schwer, weil es für jeden schiss eine eigene funktion gibt.

                    gruss

                    --
                    no strict;
                    no warnings;
                    Ich weiss es nicht, aber ich bin mir nicht sicher.
                    Craptastic.
      3. puts "Hallo " + gets.chomp + "."

        ?> Marco
        => Hallo Marco.

        andere möglichkeit gibt's nicht?

        Du könntest deine Vergleichswerte in einen eigenen Array packen und jeden dieser Werte in einer Schleife mit den Werten des anderen Arrays vergleichen.

        Somit blieben 2 Arrays, 1 Schleife und 1 Abfrage.

        (Geht aber sicher noch effizienter.)

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
        30 Days to becoming an Opera8 Lover -- Day 20: search.ini
        Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
        [Deshalb frei! - Argumente pro freie Software]
  2. Hallo Marco,

    Gibt es eine Möglichkeit bei der Funktion isset() nach zwei oder mehreren (sprich: Array) Parametern abzufragen?

    schau dir mal die Arrayfunktionen genauer an. So könnte für deine Aufgabenstellung vielleicht array-intersect oder

    http://de3.php.net/manual/de/function.array-intersect.php

    in Frage. Ich vermute mal, du möchtest überprüfen ob im Request bestimmte Variablen vorhanden sind.

    Ein möglicher Lösungsansatz könnte sein:

    <?php
    $vars = Array("var1","var2","var4");
    $keys = array_keys($_REQUEST);

    $result = array_intersect ($vars, $keys);
    if (count($result)>0) {
    echo "mindestens ein Wert vorhanden";

    } else {
    echo "alle Werte fehlen";
    }

    ?>

    Viele Grüße

    tp