Roger: array values als keys nutzen

moin!

ich habe einen array, bei dem ich die keys gleich der values setzen möchte.
also aus
Array
(
    [0] => foo1
    [1] => foo2
)

soll
Array
(
    [foo1] => foo1
    [foo2] => foo2
)
werden.
gibt es dafür ne extra funktion, oder muss ich doch das ganze mit einer foreach-schleife umwandeln?

gruß.
roger.

--
ich widersprech mir immer selber.
aber das passiert mir gott sei dank nie.
  1. Hallo,
    10 Sekunden im PHP Manual:
    array_combine --  Creates an array by using one array for keys and another for its values

    $array = array("hallo","welt");
    $array = array_combine($array, $array); //PHP5 only

    Sonst hier schauen für weiter Infos zu Arrays:
    http://de2.php.net/manual/de/ref.array.php

    Grüße
    Andavos

    1. moin!

      Hallo,
      10 Sekunden im PHP Manual:
      array_combine --  Creates an array by using one array for keys and another for its values

      lies doch bitte meine frage genauer durch, bevor du "als erster" postest.

      //PHP5 only

      ich nutze php4

      Sonst hier schauen für weiter Infos zu Arrays:
      http://de2.php.net/manual/de/ref.array.php

      da sehe ich generell als erstes nach, bevor ich fragen stelle. die übersicht brachte mich jedoch zu keinem ergebnis...

      gruß.
      roger.

      --
      ich widersprech mir immer selber.
      aber das passiert mir gott sei dank nie.
      1. Hallo Roger,

        lies doch bitte meine frage genauer durch, bevor du "als erster" postest.

        //PHP5 only
        ich nutze php4

        das hast du aber in deinem Posting nicht geschrieben ...

        Grüße aus Nürnberg
        Tobias

        1. moin!

          //PHP5 only
          ich nutze php4
          das hast du aber in deinem Posting nicht geschrieben ...

          stimmt, deswegen habe ich es ja auch an dieser stelle erwähnt ;)

          gruß.
          roger.

          --
          ich widersprech mir immer selber.
          aber das passiert mir gott sei dank nie.
          1. Hallo,

            »»lies doch bitte meine frage genauer durch, bevor du "als erster" postest.
            stimmt, deswegen habe ich es ja auch an dieser stelle erwähnt ;)

            Dann sag es nächstes mal etwas freundlicher, und tut mir leid das ich meine Kristallkugel nicht benutzt habe, die ist leider defekt :(

            Grüße
            Andavos

            1. moin!

              Dann sag es nächstes mal etwas freundlicher, und tut mir leid das ich meine Kristallkugel nicht benutzt habe, die ist leider defekt :(

              deine art war auch nicht grad die freundlichste...

              gruß.
              roger.

              --
              ich widersprech mir immer selber.
              aber das passiert mir gott sei dank nie.
  2. Hi!

    ich habe einen array, bei dem ich die keys gleich der values setzen möchte.
    also aus
    Array
    (
        [0] => foo1
        [1] => foo2
    )

    soll
    Array
    (
        [foo1] => foo1
        [foo2] => foo2
    )
    werden.
    gibt es dafür ne extra funktion, oder muss ich doch das ganze mit einer foreach-schleife umwandeln?

    Mir ist jetzt auf Anhieb keine solche Funktion bekannt, aber was spricht gegen ein solch einfaches Konstrukt wie

      
    $a = array('foo', 'bar', 'test');  
    $b = array();  
      
    foreach($a as $key => $value) {  
        $b[$value] = $value;  
    }  
      
    print_r($b);  
    
    

    Ergibt dann folgende Ausgabe:

    Array
    (
        [foo] => foo
        [bar] => bar
        [test] => test
    )

    Grüße,
    Fabian St.

    1. moin!

      $a = array('foo', 'bar', 'test');
      $b = array();

      foreach($a as $key => $value) {
          $b[$value] = $value;
      }

      print_r($b);

        
      exakt so habe ich es ja.  
      ich dachte nur, dass sowas auch mit einer bestehenden funktion schon irgendwie gibt...  
        
      gruß.  
      roger.
      
      -- 
      ich widersprech mir immer selber.  
      aber das passiert mir gott sei dank nie.
      
  3. Hello,

    ich habe einen array, bei dem ich die keys gleich der values setzen möchte.
    also aus
    Array
    (
        [0] => foo1
        [1] => foo2
    )

    soll
    Array
    (
        [foo1] => foo1
        [foo2] => foo2
    )
    werden.
    gibt es dafür ne extra funktion, oder muss ich doch das ganze mit einer foreach-schleife umwandeln?

    Das Problem steckt in der Behandlung doppelter Values.
    Wenn Du nämlich array_flip() benutzt,
    http://de3.php.net/manual/de/function.array-flip.php
    dann verschwinden einige Elemente, wenn es vorher doppelte Values gab.

    Wenn Du dich also entschieden hast, was damit zu tun ist, dann wäre vielleicht doch eine eigene Funktion die beste Lösung.

    function array_val2key($_array,&<_error_array>)
      {
        $_equal = array();
        $_error_array = array();

    foreach($_array as $key => $val)
        {
          if (isset($_equal[$val])
          {
            $_error_array[$key] = $val;
          }
          else
          {
            $_equal[$val] = $val;
          }
        }

    return $_equal
      }

    Ungetestet...

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau