[PHP] Array bis Höchsten Index befüllen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Rushh0ur, 30. März 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 30. März 2010
    Array bis Höchsten Index befüllen

    Hallo RRler,

    hab mehr oder weniger nen kleienes Problem.

    Und zwar habe ich ein Array das in etwa so aussieht:
    Code:
    Array (4 => 2, 6 => 1, 3 => 7)
    Nun möchte ich das ganze Array vom kleinsten (0) bis zum größsten Index(6) sortiert haben und die nicht besetzten Indexe mit 0 befüllen, sodass daraus dann so ein Array rauskommt:

    Code:
    Array (0 => 0, 1 => 0, 2 => 0, [B]3 => 7, 4 => 2,[/B] 5 => 0, [B]6 => 1[/B])
    Gibt es dafür eine fertige Funktion?
    Falls sich jetzt jemand fragt warum wenn doch der Zugriff auf eine nicht zugewissene Variable sowieso NULL(0) zurückgibt, das Ziel ist es mittels Implode die Datenstruktur zu erhalten, da mit Explode diese ja neu Indexiert wird und Implode die nicht besetzen werte dann ignoriert.

    Eigentlich könnte ich dafür auch Serialize nehmen aber das Resultat ist mir zu unübersichtlich.

    Zur Zeit hab ich so, aber geht das nich eleganter?
    PHP:
    ksort ( $array );
    end ( $array );

    $index  key ( $array );
    for(
    $i = 0 $i < $index ; ++ $i )
    {
        if (!
    $array [ $i ])
            
    $array [ $i ] =  0 ;
    }
    ksort ( $array );
    Mfg Rushh0ur
     
  2. 30. März 2010
    AW: Array bis Höchsten Index befüllen

    Wieso läufst du es nicht mit einer foreach schleife durch, löscht die leeren und sortierst es danach?
     
  3. 30. März 2010
    AW: Array bis Höchsten Index befüllen

    PHP:
    for ( $i = 0 $i <= max ( $array );  $i ++) {
      if (
    $array [ $i ])  $sorted_array [ $i ] =  $array [ $i ];
      else 
    $sorted_array [ $i ] =  "" ;
    }
    ungetestet
     
  4. 30. März 2010
    AW: Array bis Höchsten Index befüllen

    @Hapablap: er will die leeren ja hinzufügen
    @powernator: was wenn im index "6" die zahl 1000000 steht?

    ich denk ihr beiden habt die frage nicht richtig verstanden ^^

    -----
    tt:

    die lösung oben ist so ziemlich das optimum. das einzige was fehlt ist der sort-flag "SORT_NUMERIC".
    PHP:
    ksort ( $array , \ SORT_NUMERIC );
    end ( $array );

    for(
    $i  0 $l  key ( $array );  $i  $l ; ++ $i )
        
    $array [ i ] =  $array [ $i ] ?:  0 ;
        
    ksort ( $array , \ SORT_NUMERIC );  
     
  5. 30. März 2010
    AW: Array bis Höchsten Index befüllen

    Hmm anscheinend gibts keien bereitgestellte Funktion dafür....

    @Murdoc
    Habs jetzt zwar ein wenig anderst gemacht aber hab nun auch den Parameter SORT_NUMERIC angefügt, ich nehme mal an, dass das ganze dann schneller ausgeführt wird.

    Aha man kann also in einer for-Schleife mehrer Variablen vor Ablauf setzen; wieder mal was dazu gelernt.

    Hier jetzt meine Lösung die ich nun benutze, falls es jemand gebrauchen kann:
    PHP:
    $max     max ( array_keys ( $array ));
    $array  +=  array_fill ( 0 $max 0 );
    ksort ( $array SORT_NUMERIC );    
    Ich danke allen die was sinvolles zur Lösung beigetragen haben und damit auch ~close~.

    Mfg Rushh0ur
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.