nach unset() key neu vergeben (reseten)

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

  • nach unset() key neu vergeben (reseten)

    Hallo,

    ich steh grad irgendwie vor einer wand...

    Beispiel:
    PHP-Code:
    $test = array(=> 'eins'=> 'zwei'=> 'drei');
    unset(
    $test[2]);
    echo 
    print_r($test); 
    Ergebniss:

    Array {
    1 => eins
    3 => drei
    }

    Jetzt will ich aber das folgendes rauskommt:

    Array {
    1 => eins
    2 => drei
    }

    Wie kann ich das machen? Gibt es dafür einen Befehl? Oder muss ich das irgendwie zufuß machen?

  • #2
    du könntest das array mit array_values() neu aufbauen.

    Kommentar


    • #3
      Hmm ja schon verdammt gut, nur fängt mein Key bei 1 an und array_values() ja scheinbar bei 0

      Also wie gesagt das war schon gut... müsste nur noch irgendwie bei 1 anfangen.

      Hast dazu auch noch ne idee?

      Kommentar


      • #4
        Original geschrieben von Nordin
        Also wie gesagt das war schon gut... müsste nur noch irgendwie bei 1 anfangen.
        warum muss das eigentlich so sein?
        wenn die keys keinerlei bezug zu den values haben, sind sie doch nur wichtig, um auf den x-ten index direkt zugreifen zu können. und der index eines array fängt normalerweise bei 0 an.

        Kommentar


        • #5
          wenn die keys keinerlei bezug zu den values haben, sind sie doch nur wichtig, um auf den x-ten index direkt zugreifen zu können.
          Genau dass ist bei mir der fall

          Warum es bei mir bei 1 anfängt weiß ich jetzt garnicht... hmmm hatte aber glaub seinen grund.

          ich geh mal gucken ob ich es doch bei null anfangen lassen kann, wenn nicht bin ich bald wieder da *g*

          Kommentar


          • #6
            Wenn es tatsächlich so sein muss, wie du es hier beschreibst, dann kannst du auch mit ner foreach()-schleife das array neu erstellen.

            Normalerweise ist sowas überflüssig.

            Kommentar


            • #7
              Ich versteh dein Problem nicht!
              Wenn dein Schlüssel eines Arrays mit unset gelöscht wurde, dann isses einfach weg!

              gibt kein reset! Entweder du liest einfach nochmal alles ein und löscht schlüssel nr 3 oder du fügst explizit den schlüssel drei wieder dazu!

              Beschreib dein Problem besser! ich glaube nicht, dass du ein array mit so komischen werten brauchst!
              Find Parties?
              Partysuche

              Kommentar


              • #8
                Mal abgesehen davon, dass ich den Wunsch für Blödsinn halte...
                Da brauchts keine Schleife für:
                PHP-Code:
                error_reporting(E_ALL);
                ini_set('display_errors'TRUE);


                function 
                normalisiere_array_startindex_1(&$feld)
                {
                  
                $feld array_values($feld);
                  
                array_unshift($feld,'dummy');
                  unset(
                $feld[0]);
                }

                // testcode
                $array = array(1,2,3,4,5,6,7,8);
                unset(
                $array[5]);
                normalisiere_array_startindex_1($array);
                print_r($array); 
                Zuletzt geändert von combie; 23.08.2007, 12:40.
                Wir werden alle sterben

                Kommentar


                • #9
                  So einfach ist das alles nicht....

                  Ich konnte mein Problem zwar schon lösen (in dem ich mein array doch bei 0 anfangen lassen konnte und nachdem ich dann gezielte keys durch unset gelöscht hab, hab ich es neu aufgebaut durch eine schleife...) aber ich erklär mal wie mein array aufegbaut ist

                  PHP-Code:
                  $id count($var)+1;
                  $array_zehn implode("', '"$_POST);
                  $array_elf array_keys($_POST);
                  $array_elf implode("', '"$array_elf);

                  $var[$id] = array('wort1''wort2''wort3''wort4''wort5''wort6''wort7''wort8''wort9', array($array_zehn), array($array_elf)); 
                  $var[$id] wird dann mit fwrite in eine datei geschrieben....

                  Sieht dann so aus:
                  $var[0] = array(....
                  $var[1] = array(....
                  $var[2] = array(....
                  .
                  .
                  .

                  nu will ich in einem anderen zug ein bestimmtes array ($var[]) löschen... das mach ich mit unset() danach lass ich es durch array_values() laufen und erzeige es neu... so funktioniert es jetzt jedenfalls.

                  Ich durchsuche im grunde jedes $_POST nach SPAM... im array 0-9 sind die dinge die der user mit sendet (useragent, remoteaddr.....) in array 10 ist der name des $_POST und in array 11 der value des $_POST

                  Kommentar


                  • #10
                    die datenstruktur ist nicht optimal. schreibe dir eine klasse, deren objekte diese ganzen informationen geeignet kapseln.

                    Kommentar


                    • #11
                      hmm puh... ja... jetzt hab ich mir so nen kopf gemacht und es geht doch noch besser

                      Kommentar

                      Lädt...
                      X