kostenloser Webspace werbefrei: lima-city


Array aussortieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    sros

    sros hat kostenlosen Webspace.

    Hallo

    Ich suche eine Funktion mit der ich alle Werte die einen bestimmten Wert haben herauslösche und dann soll die Index neu so vergeben werden, dass nicht Lücken dazwischen entstehen:

    ich versuch das in einem Beispiel besser darzustellen:

    $array[0]=1;
    $array[1]=-1;
    $array[2]=5;
    $array[3]=8;
    $array[4]=2;
    $array[5]=-3;
    $array[6]=-1;

    Jetzt möchte ich alles -1 herauslöschen und dann alle werte so neu zuordenen, dass die reihenfolge erhalten bleibt aber, die Lücken entfernt werden!

    $array[0]=1;

    $array[2]=5;
    $array[3]=8;
    $array[4]=2;
    $array[5]=-3;

    ____________________
    $array[0]=1;
    $array[1]=5;
    $array[2]=8;
    $array[3]=2;
    $array[4]=-3;

    So soll das Endprodukt dann praktisch aussehen :)

    ich hoffe ich hab das einigermaßen gut geschildert !!

    bedanke mich schon mal im voraus für antworten


    mfg sRos
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Dazu nehme man array_unique().

    Näheres wie immer in der PHP Doku nachzulesen.

    //edit: Die Schlüssel bleiben dann aber erhalten. Du müsstet also noch manuell einmal das Array mit neuen Indexen erstellen oder schreibst dir selbst eine Funktion die das arangiert. Ist mit zwei einfachen For-Schleifen schnell erledigt.

    Beitrag geändert: 23.11.2007 10:39:25 von evil-devil
  4. sorry, aber array_unique() bringt dir da gar nix!
    Weil das tut wie es schon sagt doppelte entfernen und
    zu einem machen also wenn du [4] = -1 und [7] =-1 hattest
    hast dann noch nur [4] = -1 ich würde dir eher dazu
    raten eine funktion zu schreiben die einfach alle felder
    durchgeht und die die du willst schreibt er in ein neues
    Array und das wird zurück geliefert

    <?php
    function cutOff ( $array )
    {
       $newArr = array();
       foreach ( $array as $value ) 
       {
           if ( $value != -1 )
               $newArr[] = $value;
       }
       return $newArr;
    
    }
    ?>
  5. Alternativ k&#246;nntest du es auch mit einer Callbackfunktion machen...
    <?php
        // Callbackfunktion zu array_filter()
        function ist_zahl_positiv($var) {
            return (intval($var) > 0) ? true : false;
        }
    
        // Input
        $arr_test = array(1, -1, 3,-5,2,-8,9);
      
        // Verarbeitung - filter Werte
        $filt = array_filter($arr_test, 'ist_zahl_positiv');
        // neues Array generieren aus den gefilterten Werten
        $new = array_values($filt);
        
        // Ausgabe
        var_dump($new);  
    ?>


    Die Callbackfunktion "ist_zahl_positiv" pr&#252;ft ob das Element positiv ist und gibt bei Erfolg true zur&#252;ck sonst false. Alle true-Werte werden von array_filter im Array belassen.
    Array_values() erstellt dann ein neues Array mit durchgehendem Index.

    Gr&#252;&#223;le

    Edit: Nat&#252;rlich kannst du noch einige Variablen einsparen, aber um die einzelenen Schritte hervorzuheben, hab ich diese mal drin gelassen. Bei der Callbackfkt. kannst du nat&#252;rlich auch genau auf einen Wert pr&#252;fen - wie gesagt es mu&#223; einfach true oder false am Ende raus kommen.

    Beitrag geändert: 23.11.2007 17:28:31 von scout

  6. sirseven schrieb:

    <?php
    function cutOff ( $array )
    {
     $newArr = array();
     foreach ( $array as $value ) 
     {
     if ( $value != -1 )
     $newArr[] = $value;
     }
     return $newArr;
    
    }
    ?>


    Das geht noch besser, wenn er alles doppelte entfernen will:
    <?php
    function exterminate_double( $array ) {
     $newArr = array();
     foreach ( $array as $value ) 
     {
     if (array_search($value) === false)
     $newArr[] = $value;
     }
     return $newArr;
    }
    ?>


    Etwas besser umschreibung w&#228;re vllt noch sch&#246;ner f&#252;r uns, sros.

    -AlienDwarf
  7. Autor dieses Themas

    sros

    sros hat kostenlosen Webspace.

    Es tut mir sehr sehr leid, dass ich erst jetzt schreibe aber aufgrund des stresses in der schule hatte ich das projekt aufgeschoben und nehme mir jetzt in den weihnachtsferien wieder zeit..

    hab das ganze probiert und die funktion von SIRSEVEN funktionier einwandfrei.. herzlichen dank!

    DANKE, mfg und frohe weihnachten im nachhinein & einen guten rutsch :)

    sRos
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!