WernerK: Array Elemente verschoben, Positionen vergleichen?

Hallo,

Ein Array das am Anfang so aussieht:

Array ( [0] => 1.jpg [1] => 2.jpg [2] => 3.jpg [3] => 4.jpg [4] => 5.jpg [5] => 6.jpg [6] => 7.jpg [7] => 8.jpg [8] => 9.jpg [9] => 10.jpg )

Nachher: Seite 2 (2.jpg) wurde hinter Seite 5 (5.jpg) verschoben.

Array ( [0] => 1.jpg [1] => 3.jpg [2] => 4.jpg [3] => 5.jpg [4] => 2.jpg [5] => 6.jpg [6] => 7.jpg [7] => 8.jpg [8] => 9.jpg [9] => 10.jpg )

Ich bräuchte jetzt irgend eine Ausgabe oder Ergebnis das mir die alte und neue Position ausgibt:

Gibt es eine Möglichkeit diese beiden Arrays zu vergleichen so das man herausbekommt welches Element sich von welcher Position wohin verschoben hat?
Also wie im Beispiel
Element von Position 2 hat sich nach 5 verschoben?

vielen Dank
Gruss
Werner

  1. Tach!

    Gibt es eine Möglichkeit diese beiden Arrays zu vergleichen so das man herausbekommt welches Element sich von welcher Position wohin verschoben hat?

    Nein, ist mir nichts bekannt. Aber alle Array-Funktionen stehen schön übersichtlich in einem eigenen Kapitel im PHP-Handbuch.

    Also wie im Beispiel
    Element von Position 2 hat sich nach 5 verschoben?

    Und 3, 4 und 5 sind jeweils eins vorgerückt. Ich denke, diese Information willst du nicht haben, bekommst sie aber gratis dazu und müsstest sehen, wie du sie von der eigentlich gewünschten unterscheiden kannst.

    dedlfix.

  2. Gibt es eine Möglichkeit diese beiden Arrays zu vergleichen so das man herausbekommt welches Element sich von welcher Position wohin verschoben hat?

    Entweder Du speicherst (loggst) das beim "Verschieben" oder Du hast den alten und den neuen Array.

    Wenn Du den alten und den neuen Array hast kann es so gehen: Du wandelst die Arrays jeweils in einen Hash um, der die Werte als Keys und die Keys als Werte hat - und fragst die Hashes ab.

    Dies ist nur Beispielcode. Er funktioniert voraussichtlich nicht:

    <?php  
    # [...]  
    $hash_neu = Array2Hasch ($array_neu);  
    $hash_alt = Array2Hasch ($array_alt);  
      
    $str='1.jpg';  
      
    echo ('Alte Position: ', $hash_alt[$str], '<br />');  
    echo ('Neue Position: ', $hash_neu[$str], '<br />');  
    exit;  
      
      
    function Array2Hasch ($ar) {  
       reset ($array);  
       while ( $pos = key($ar) ) {  
          $hash[$ar[$pos]] = pos;  
       }  
       return $hash;  
    }  
    ?>
    
    1. [latex]Mae  govannen![/latex]

      $hash_neu = Array2Hasch ($array_neu);

      Cool! Da werden sich alle Kiffer freuen ;)

      Stur lächeln und winken, Männer!
      Kai

      --
      It all began when I went on a tour, hoping to find some furniture
       Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
      SelfHTML-Forum-Stylesheet
    2. Tach!

      Ach Fredstix, du lernst es wohl nie. Dein Code ist voller Fehler und völlig überflüssig - also mal wieder nur hingeschludert. Die Position eines Elements lässt sich mit array_search() finden. Und wenn die Keys nicht fortlaufend sind, schickt man das Array vorher noch durch array_values().

      reset ($array);
         while ( $pos = key($ar) ) {

      plus ein vergessenes next()

      Wann hast du das letzte Mal PHP programmiert? foreach existiert seit zwölf Jahren (seit PHP4).

      dedlfix.

      1. Dein Code ist voller Fehler und völlig überflüssig - also mal wieder nur hingeschludert.

        Was meinte wohl das von Dir nicht zitierte:

        Dies ist nur Beispielcode. Er funktioniert voraussichtlich nicht:

        Du kommst mir vor wie der Herr in der Geschichte vom Diener und dem Herrn:

        Herr: Gib mir, was in der Flasche ist!
        Diener: Herr! Das ist Essig!
        Der Herr reißt dem Diener die Flasche aus der Hand und trinkt.
        Herr:**prrrrrr**
        Herr: Du wagst es mir Essig zum Trinken geben? Nimm die Hiebe!
        ...
        Herr: Gib mir, was in der Flasche ist!
        Diener: Herr! Das ist Gift!
        Der Herr reißt dem Diener die Flasche aus der Hand und trinkt.
        ...

        Fred