Einfachere Lösung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einfachere Lösung

    Hallo

    Ich möchte in einem string mehrere (5) Variablen suchen. Da ich nun auch noch abfragen müsste ob in $m1 - $m5 überhaupt ein Wert vorhanden ist (sonst wäre ein Vergleich nicht notwendig) wird es kompliziert.

    Gibt es eine einfachere Lösung als diese verschachtelten if's?

    PHP-Code:
          $m1 substr ($inhalt0,3);
          
    $m2 substr ($inhalt4,3);
          
    $m3 substr ($inhalt8,3);
          
    $m4 substr ($inhalt12,3);
          
    $m5 substr ($inhalt16,3);

          
    $merkmale = array("50""51""104""108" etc.);

          if  (
    in_array(($m1),$merkmale))
              {
              if  (
    in_array(($m2),$merkmale))
                  {
                  if  (
    in_array(($m3),$merkmale))
                      {
                      if  (
    in_array(($m4),$merkmale))
                          {
                          if  (
    in_array(($m5),$merkmale))
                              {
                              echo 
    "Alle Merkamle gefunden";
                              }
                          }
                      } 
                  }
              } 
    nb. bitte nicht ab den "{}" aufregen, als ausgedienter Cobolprog ist das intus ...
    Zuletzt geändert von nebbiolo; 22.04.2017, 08:44.

  • #2
    Ungetestet:

    PHP-Code:
    <?php
       $ok 
    true;
       
       
    $merkmale = array("50""51""104""108");
       
       for (
    $i 0$i count($merkmale); $i += 4)
       {
          if (! 
    in_array(substr ($inhalt$i,3)))
          {
             
    $ok false;
             
             break;
          }
       }
       
       if (
    $ok)
         echo 
    "Alle Merkamle gefunden";
       else
         echo 
    "Nicht alle Merkamle gefunden";
    ?>

    Kommentar


    • #3
      vielen Dank Bandit!

      Aber das schwirrt bei mir der Kopf ebenso ...

      Ich möchte bei $my (statt Abfrage $m1 etc.) mehrere Werte eingeben, aber beim testen funktionert es nicht:
      PHP-Code:
      $mx "50,"."104,"."108,"."0";
      $merkmale explode(","$mx );
      $my "104,"."108";
      if  (
      in_array($my$merkmale))
           echo 
      "Alle Merkamle gefunden<br/>"
      ist das nicht möglich?

      Kommentar


      • #4
        PHP-Code:
        $needles = [104108];
        $haystack = [501041080];

        $found false;
        foreach (
        $needles as $needle) {
            if (
        in_array($needle$haystack)) {
                
        $found true;
            }
        }

        var_dump($found); // bool(true) 

        Kommentar


        • #5
          SUPER h3ll, genau das habe ich gesucht ... und es funktioniert nach meine Vorstellungen.
          Vielen Dank und schönes Wochenende an alle, Nebbiolo

          Kommentar


          • #6
            zu früh gefreut ;-(

            So muss nur ein Merkmal vorhanden sein im String (104 oder 108), ich benötige aber dass gem. Beispiel 104 UND 108 im $haystack vorhanden sind.

            muss ich da noch mitzählen oder wie kann ich das lösen ?

            Kommentar


            • #7
              PHP-Code:
              $needles = [104108];
              $haystack = [501041080];

              $found true;
              foreach (
              $needles as $needle) {
                  if (!
              in_array($needle$haystack)) {
                      
              $found false;
                  }
              }

              var_dump($found); // bool(true) 

              Kommentar


              • #8
                so einfach ;-)
                Danke h3ll - so funktioniert es nun definitiv.

                Kommentar

                Lädt...
                X