Rod: Im Array 2 Felder vertauschen

Hi,

ich habe ein Array, was in etwa so aussieht:

Feld0|Feld1|Feld2|Feld3|Feld4

Nunn möchte ich bei einigen Datensätzen Feld2 und Feld3 einfach vertauschen. Aber wie mache ich das am besten?

if (($zeilenfelder[2] == "bedingung1") && ($zeilenfelder[3] != "bedingung2")) {
Felder tauschen!;
}

Grüße

Rod

  1. Hallo!

    ich habe ein Array, was in etwa so aussieht:
    Feld0|Feld1|Feld2|Feld3|Feld4

    Nunn möchte ich bei einigen Datensätzen Feld2 und Feld3 einfach vertauschen. Aber wie mache ich das am besten?

    if (($zeilenfelder[2] == "bedingung1") && ($zeilenfelder[3] != "bedingung2")) {
    Felder tauschen!;
    }

    Also vielleicht verstehe ich Dein Problem nicht, aber

    $bla=$array[assoziation1];
    $array[assoziation1]=$array[assoziation2];
    $array[assoziation2]=$bla;

    sollte doch funktionieren?
    call_user_func_arrray() und array_walk() schauen gut aus - habe ich aber noch nie verwendet.

    Beste Grüße
    Viennamade

    1. Hallo.

      Man könnte es auch mit Referenzen (http://de3.php.net/manual/de/language.references.php) machen.

      $bla =& $array[assoziation1];
      $array[assoziation1] =& $array[assoziation2];
      $array[assoziation2] =& $bla;

      Dabei werden nur die 'Verknüpfungen' zwischen Variablenname und Inhalt neu gelegt.
      Was schneller ist, weiß ich allerdings auch nicht.

      MfG _Siro.

      1. Hi,

        genauso hatte ich es schon versucht, aber ich bekomme meion Array nicht mehr zusammen :-(

        Ich teile es erst auf:

        $zeilenfelder = explode("|",$zeile);

        Dann weise ich z.B. einen neuen Wert zu:

        if ($zeilenfelder[2] == "Wert1") {
        $zeilenfelder[2] = "Wert2";
        }

        Aber das eigendliche Array "$zeile" bleibt ja unverändert. Wie bekomme ich also das neue Element "$zeilenfelder[2]" innerhalb des arrays "$zeile" an die Stelle, wo zuvor das alte stand?

        Danke und Grüße

        Rod

        1. Hallo!

          Ich teile es erst auf:
          $zeilenfelder = explode("|",$zeile);

          if ($zeilenfelder[2] == "Wert1") {
          $zeilenfelder[2] = "Wert2";
          }

          Aber das eigendliche Array "$zeile" bleibt ja unverändert.

          Du veränderst es ja auch nirgendwo.

          Wie bekomme ich also das neue Element "$zeilenfelder[2]" innerhalb des arrays "$zeile" an die Stelle, wo zuvor das alte stand?

          Ich denke, daß dies mit http://at.php.net/manual/de/function.implode.php funktionieren sollte.

          Beste Grüße
          Viennamade