Ankündigung

Einklappen
Keine Ankündigung bisher.

Position eines Schlüssels eines Array

Einklappen

Neue Werbung 2019

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

  • Position eines Schlüssels eines Array

    Hallo,

    gibt es eine Funktion von PHP, mit der ich die Position eines Schlüssels in einem Array finden kann ohne eine Schleife zu benutzen?

    Beispiel:
    PHP-Code:
    $myArray = array ( );
    $myArray[1234] = "String ...";
    $myArray[1235] = "String ...";
    $myArray[1236] = "String ...";
    $myArray[1237] = "String ..."
    Da ich z. B. den Key 1236 vorliegen habe, möchte ich die Position ermitteln. In diesem Fall wäre es ja Position 3.

    Danke für einen Tipp.

    mfg
    stiff82

  • #2
    Verstehe ich nicht... Wenn Dir der Schlüssel 1236 vorliegt, kannst Du doch direkt auf das Element zugreifen, wie Du es ja auch machst...

    Was auch immer Du mit der Position willst, könnte so funktionieren:
    PHP-Code:
    $iPosition array_search1236array_keys($myArray) ); 

    Kommentar


    • #3
      nein. du brauchst entweder for/while/foreach oder einen array Iterator (array_map, array_walk, ...). und sobald du irgendeine Sortierung vornimmst, ist die Position anders.

      Aber es kann natürlich sein, daß man das Problem auch komplett vermeiden kann.

      Kommentar


      • #4
        Was halbsinniges... Da ein foreach() dann ev. doch sinnvoller.

        PHP-Code:
        $a = [
            
        1234 => "Eins",
            
        1235 => "Zwei",
            
        1236 => "Drei",
            
        1237 => "Vier",
        ];

        $getPos 1236;  // Pos. dieses Wertes suchen

        $idx array_search($a[$getPos], array_values($a), true);
        echo (
        null !== $idx) ? ++$idx null;
        // 3 

        Kommentar


        • #5
          Was ist der Hintergrund deiner Frage bzw. wofür brauchst du die Position oder den Offset?

          Kommentar


          • #6
            eben jenes würd mich auch interessieren. Wozu glaubst du die Position des Schlüssels im Array zu benötigen - wenn du den Key selbst hast, hast du doch schon direkten Zugriff ... noch besser geht es kaum

            Kommentar


            • #7
              Wenn als Beispiel mit array_slice auf ein Segment zugegriffen werden soll, wird ein solcher Offset benötigt.
              Ist jedoch wie im Beispiel ein Array nicht fortlaufend numerisch indiziert, kann es zu Problemen kommen (Stichwort Sortierung, Hinweis schon in #3).
              Dafür gibt es bessere Lösungen als dies mit array_slice zu machen.

              Kommentar


              • #8
                So ginge es auch

                PHP-Code:
                $resultpos array_keys(array_keys($myArray),$indexsearch);
                    if ( empty(
                $resultpos) ) {
                        echo 
                'Der Index '$indexsearch ' ist nicht vorhanden';
                    }else{
                        echo 
                'Der Index '$indexsearch ' steht an der ' . ($resultpos[0]+1) . ' Position.';
                    } 
                Anmerkung:Rückgabe von array_keys ist ein Array, falls der gesuchte Index mehrfach vorkommen sollte.

                Kommentar


                • #9
                  Entscheidender Vorteil zu #2?

                  Kommentar


                  • #10
                    Zitat von Arne Drews Beitrag anzeigen
                    Entscheidender Vorteil zu #2?
                    Praktisch wohl keiner.

                    Kommentar


                    • #11
                      Vorteil aus #2 ist, dass Du direkt die Position erhältst und nicht erst noch aus einem Array-Element lesen musst.
                      Aber eine Möglichkeit stellt Deine Methode natürlich trotzdem dar.

                      Alles aber wie Dormilich bereits angemerkt hat, nur solange nichts umsortiert wurde...

                      Kommentar

                      Lädt...
                      X