Paul: array Elemente löschen und aufrücken

Moin,
habe ein array aus dem ich einige elemente lösche (unset($wert[$i]).
Nun möchte ich die übrig bleibenden Elemente aufrücken lassen. Also das die Zählung der Elemente ohne Lücke weiter geht. Wie mache ich das?
Paul

  1. Hi Paul!

    habe ein array aus dem ich einige elemente lösche (unset($wert[$i]).
    Nun möchte ich die übrig bleibenden Elemente aufrücken lassen. Also das die Zählung der Elemente ohne Lücke weiter geht. Wie mache ich das?

    Mit array_splice().

    Der Aufruf von unset() wird dann auch überflüssig.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Vielleicht bin ich zu doof aber ich raffs nicht:

      <?php  
      $list = array ('aaa','aaa','aaa','aaa','123','123','123','123','bbb','bbb','bbb','bbb');  
      echo 'count='.count($list).'<br>';  
      print_r($list);  
      echo '<br>';  
        
      for($j=0;$j<count($list);$j++) {  
          if($list[$j] == $list[$j+1]) {  
            array_splice($list, $j+1, 1);  
          }  
      }  
        
      echo 'count='.count($list).'<br>';  
      print_r($list);  
      echo '<br>';  
      ?>
      

      Eigentlich möchte ich am ende nur drei Elemente haben...

      1. Hi,

        for($j=0;$j<count($list);$j++) {
            if($list[$j] == $list[$j+1]) {
              array_splice($list, $j+1, 1);

        Mit so einer for-Schleife kannst du zwar generell indexbasiert auf das jeweils nächste Array-Element zugreifen; allerdings ist dieses jeweils „nächste“ nicht das, für das du es hältst.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. nicht das, für das du es hältst.

          Versteh ich zwar nicht aber ich hab's jetzt so gemacht (und es läuft):

          <?php  
          $list_new = Array();  
          $list = array ('aaa','aaa','aaa','aaa','123','123','123','123','bbb','bbb','bbb','bbb');  
          echo 'count='.count($list).'<br>';  
          print_r($list);  
          echo '<br>';  
            
          $i = 0;  
          for($j=0;$j<count($list);$j++) {  
              if($list[$j] != $list[$j+1]) {  
                $list_new[$i] = $list[$j];  
                $i++;  
              }  
          }  
            
            
          echo 'count='.count($list_new).'<br>';  
          print_r($list_new);  
          echo '<br>';  
            
          ?> 
          
          1. Hi,

            nicht das, für das du es hältst.

            Versteh ich zwar nicht

            Dann solltest du mal drüber nachdenken ...

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          2. Versteh ich zwar nicht aber ich hab's jetzt so gemacht (und es läuft):

            <?php

            $list = array ('aaa','aaa','123','aaa','bbb','aaa','123','123','123','123','aaa','bbb','bbb','aaa','bbb','bbb');

            ?>

              
            hallo ,  
            Ausweg  
            <http://de.php.net/manual/de/function.array-unique.php>  
            <http://de.php.net/manual/de/ref.array.php>  
            <http://www.selfphp.de/funktionsreferenz/array_funktionen/index.php>  
              
            mfg
            
      2. Hallo,

        for($j=0;$j<count($list);$j++) {
            if($list[$j] == $list[$j+1]) {
              array_splice($list, $j+1, 1);
            }
        }

        da scheint es mir erstmal einfacher und vielleicht auch performanter zu sein, wenn ein neues array erstellt wird. Also Wert ins neue array wenn er ungleich ist.

        Grüsse

        Cyx23