Michael H.: Arraykey nachträglich vergeben?

Hi,

Kurze Frage: Ich erhalte über ein Array der Form
array(1,2,3,4,5)

Nun will ich sowohl dem ersten als auch dem letzten Element dieses Arrays einen assoziativen Key geben. Kann ich das mittels einer PHP-Funktion oder soll ich das ganze Array in ein anderes kopieren und beim ersten und letzten Eintrag den entsprechenden Schlüssel eintragen?

Etwas Kurzes, Knappes wäre sehr angenehm.

Thx,
      Michael H.

  1. Tach Michael,
    also ich habe mich eben mal kurz hingesetzt und was geschreiben... aber es ist ein wirklich quick and dirty script... also ich weiss nicht ob das performanter ist als das array zu kopieren.

    $a = array(1,2,3,4,5);

    /* schlüssel mit werten tauschen */
    $a = array_flip($a);

    /* schlüssel ändern */
    $a[1] = "a";
    $a[ count($a) ] = "b";

    /* wieder zurück tauschen */
    $a = array_flip($a);

    /* kontroll ausgabe */
    while(list($k,$v) = each($a))
     echo 'Key: '.$k.' Var: '.$v.'<br>';

  2. Holladiewaldfee,

    Kurze Frage: Ich erhalte über ein Array der Form
    array(1,2,3,4,5)

    Nun will ich sowohl dem ersten als auch dem letzten Element dieses Arrays einen assoziativen Key geben. Kann ich das mittels einer PHP-Funktion oder soll ich das ganze Array in ein anderes kopieren und beim ersten und letzten Eintrag den entsprechenden Schlüssel eintragen?

    Warum so viel Aufwand?

    $x['bla'] = $x[0];
    $j = count($x)-1
    $x['foo'] = $x[$j];
    unset($x[0], $x[$j]);

    Ciao,

    Harry

    --
      Herbst ist Wanderzeit!
      http://harry.ilo.de/projekte/berge/
    1. Warum so viel Aufwand?

      $x['bla'] = $x[0];
      $j = count($x)-1
      $x['foo'] = $x[$j];
      unset($x[0], $x[$j]);

      Auch sehr schön, aber ich denke ich würde $j = count($x)-2; benutzen, sonnst macht es nicht ganz das richtige.

      David

      1. Holladiewaldfee,

        Auch sehr schön, aber ich denke ich würde $j = count($x)-2; benutzen, sonnst macht es nicht ganz das richtige.

        Stimmt, das count() war falsch platziert:

        $j = count($x)-1;
        $x['bla'] = $x[0];
        $x['foo'] = $x[$j];
        unset($x[0], $x[$j]);

        So ist's besser, wobei natürlich auch wie Du gesagt hast count($x)-2 an der alten Stelle funktionieren würde.

        Ciao,

        Harry

        --
          Herbst ist Wanderzeit!
          http://harry.ilo.de/projekte/berge/
  3. Moin!

    Kurze Frage: Ich erhalte über ein Array der Form
    array(1,2,3,4,5)

    Direkt _so_?

    Dann würde ich nämlich
    array('eins'=>1,2,3,4,'fuenf'=>5)
    draus machen wollen. Ergibt im Resultat (mit print_r):
    Array
    (
        [eins] => 1
        [0] => 2
        [1] => 3
        [2] => 4
        [fuenf] => 5
    )

    Die Reihenfolge in PHP-Arrays ist ja bekanntlich definiert, du kriegst also (z.B. mit foreach) immer dieselbe.

    Etwas Kurzes, Knappes wäre sehr angenehm.

    Ich finde das sehr kurz und knapp. Oder? Die mittleren Indices, die nicht mehr so ganz passen, kann man programmtechnisch anpassen.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)