Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Array-Schlüssel auf Existenz prüfen

Einklappen

Neue Werbung 2019

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

  • Mehrere Array-Schlüssel auf Existenz prüfen

    Hi zusammen,

    ich hab mal wieder ein kleines Problem, an dem ich nicht weiter komm und Freund google kann mir nur bedingt helfen.

    Und zwar suche ich eine Funktion, die in einem Array nach bestimmten Schlüsseln sucht. Nun hab ich array_key_exists gefunden, aber die sucht nur nach einem bestimmten Wert. Ich brauch eine Funktion, die z.B. prüft, ob Schlüssel 2 und/oder Schlüssel 4 und/oder Schlüssel 9 vergeben sind und dann true zurück gibt.

    Habt ihr so eine Funktion schon einmal gesehen?

    Danke euch und Grüße


  • #2
    Logische Operatoren sind dir bekannt? Da gehöhren unter anderem auch AND und OR dazu.

    PHP-Code:
    if(array_key_exists(...) AND array_key_exists(...) ...) {


    Kommentar


    • #3
      @erc: Klar sind mir die bekannt, ich dachte nur an eine einfachere Lösung in der Form: existiert_einer_dieser_keys('2','4','9'; array);

      Kommentar


      • #4
        Ev. als Alternative... http://php.net/manual/de/function.isset.php

        Aber genau lesen ob das für deine Situation zutrifft!

        Prüft, ob eine Variable existiert und nicht NULL ist.
        ...
        Wenn mehrere Parameter übergeben werden, gibt isset() nur dann TRUE zurück, wenn alle Parameter belegt sind. Die Auswertung geht von links nach rechts und wird abgebrochen, sobald eine Variable nicht belegt ist.
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Wenn Du nur prüfen willst, ob der Key existiert, unabhängig vom Wert, dann sollte Dir isset() ausreichen. Ansonsten dann noch zum Beispiel mit empty() prüfen, ob hier etwas drin steht.
          PHP Entwickler aus Berlin

          Kommentar


          • #6
            Zitat von michiman Beitrag anzeigen
            @erc: Klar sind mir die bekannt, ich dachte nur an eine einfachere Lösung in der Form: existiert_einer_dieser_keys('2','4','9'; array);
            Bau dir doch eine Funktion.

            Kleiner Ansatz:

            PHP-Code:
            //In diesem Arry soll gesucht werden
            $array = array(=> 'test'=> 'test2'=> 'test');

            //Hier gibst du an nach welchen Keys gesucht werden soll
            $key_need = array(159);

            check_if_keys_in_array($key_need$array);

            function 
            check_if_keys_in_array($key_need$arr){
                foreach(
            $key_need as $value){
                    if(!
            key_exists($value$arr)){
                        return 
            false;
                    }
                }
                return 
            true;

            Kommentar


            • #7
              Danke für eure Antworten. Ich dachte, es gibt vielleicht schon eine fertige... Dann bau ich sie selbst.

              Danke an alle!

              Kommentar


              • #8
                array_keys() und array_intersect() helfen weiter:

                PHP-Code:
                $array = array(=> 'test'=> 'test2'=> 'test'=> 'test'); 

                $key_need = array(159); 

                $array_keys array_keys($array);

                $intersect array_intersect($key_need$array_keys);
                var_dump($intersect);

                if (
                count($intersect) == count($keys_need))
                  echo 
                'alle gesuchten Schlüssel sind enthalten.'
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Übrigens: array_diff_key und count-Prüfung des Resultats auf den Wert 0, statt einer Intersection und doppelter count-Abfrage, reduziert das ganze auf eine count-Abfrage.
                  [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                  Kommentar


                  • #10
                    Kommt immer drauf an, was genau du prüfen willst. Um festzustellen, ob exakt die Anzahl der Schlüssel gefunden wurde, kommst du nicht drumherum zu wissen, wieviele gesucht waren.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar

                    Lädt...
                    X