Schlüssel von Assoziative Arrays verändern

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

  • Schlüssel von Assoziative Arrays verändern

    Gibt es eine Möglichkeit einen Schlüssel eines assoziativen Arrays zu verändern.
    Also einem bestimmten Wert einen neuen Schlüssel zuzuweisen.
    Allerdings ohne den Umweg zu machen, einen neues Schlüssel/Wert-Paar mit dem bekannten Wert und dem neuen Schlüssel zu erstellen und dafür das alte Paar zu löschen.

    Vielen Dank, murray2000


    [PHP 5.2.5] auf Apache HTTPD 2.2.8

  • #2
    Es gibt keine mir bekannte Lösung, darum würde ich einfach mal sagen: Nein!

    Kommentar


    • #3
      Ist von der Logik auch nicht ganz nachvollziehbar. Wenn ich den Schlüssel "ändere", kommt das einem neuen Index gleich. Daher auch von mir ein nein.

      Generell: Wenn es eine Funktion geben würde, müsste die unter array stehen.

      Wenn die Reihenfolge im array egal ist: löschen, dann neu erstellen.
      Wenn die Reihenfolge bestehen bleiben soll, kommst du um eine schleife nicht rum.

      Kommentar


      • #4
        PHP-Code:

        $var 
        = array('hallo'=>1,'du'=>2);
        $var array_flip($var); 
        wenn man sich das ganze nun mit

        PHP-Code:
        var_dump($var); 
        Code:
        array(2) 
        { 
        [1]=>  string(5) "hallo" 
        [2]=>  string(2) "du" 
        }
        
        anstatt
        
        array(2) 
        {
        ["hallo"]=>  int(1)
        ["du"]=>  int(2) 
        }
        somit hat man einen prüfbaren wert denn man verändern kann.
        der bequem mit foreach und if anweisungen verändert werden kann.
        danach nur noch wieder array_flip und schon hast du veränderte keys mit den selben werten.

        aber um konstrukte kommst du da leider nicht rum
        Bitte Beachten.
        Foren-Regeln
        Danke

        Kommentar


        • #5
          Original geschrieben von Wyveres
          aber um konstrukte kommst du da leider nicht rum
          Da ist eine Neuzuweisung und das Löschen des alten Eintrags vermutlich um einiges effizienter.
          Gruss
          H2O

          Kommentar


          • #6
            Original geschrieben von H2O
            Da ist eine Neuzuweisung und das Löschen des alten Eintrags vermutlich um einiges effizienter.
            vor allem bekomme ich dann auch keine probleme mit doppelten werten im Array.

            Kommentar


            • #7
              vor allem bekomme ich dann auch keine probleme mit doppelten werten im Array.
              Oder mit nicht-String/nicht-Integer Werten in Arrays!

              Kommentar


              • #8
                Nebenbei:

                Bei solchen Problemstellungen frag ich mich immer warum man das überhaupt braucht

                Kommt mir oft so vor als ob da mit einem völlig falschen Lösungsansatz an ein Problem herangegangen wird. Ich für meinen Teil wollte/musste noch nie den Index eines Arrays ändern.
                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                Schön - etwas Geschichte kann ja nicht schaden.
                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                Kommentar

                Lädt...
                X