Ankündigung

Einklappen
Keine Ankündigung bisher.

array values in keys umwandeln

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • array values in keys umwandeln

    Guten Morgen,

    ich habe folgendes Problem:

    ich habe hier ein Array, mit den Values nach dem explode
    PHP-Code:
    $text 'item.test.6.12134.12.12.343.4546';
    $text explode('.',$text);

    Array
    (
        [
    0] => item
        
    [1] => test
        
    [2] => 6
        
    [3] => 12134
        
    [4] => 12
        
    [5] => 12
        
    [6] => 343
        
    [7] => 4546

    daraus will ich ein Array bauen, das nur aus Keys besteht und der letzte Value als Wert hinzugefügt wird.
    Hat jemand eine Idee wie sowas gemacht wird ?

    PHP-Code:
    Array
    (
        [
    item] => Array
            (
                [
    test] => Array
                    (
                        [
    6] => Array
                            (
                                [
    12134] => Array
                                    (
                                        [
    12] => Array
                                            (
                                                [
    12] => Array
                                                    (
                                                        [
    343] => 4546
                                                    
    )

                                            )

                                    )

                            )

                    )

            )





    Viele Grüße

    mattin_m


  • #2
    PHP-Code:
    $result array_pop($array);
    foreach (
    array_reverse($array) as $value) {
      
    $result = array($value => $result);

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

    Kommentar


    • #3
      und der letzte Value als Wert hinzugefügt wird
      Das klingt doch jetzt schon nach einer fehlerhaften Konvention.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        jo, warum nicht so?
        PHP-Code:
        $text 'item.test.6.12134.12.12.343=4546';
        list(
        $path,$value) = explode('='$text2);
        $result = array();
        $current =& $result;
        foreach(
        explode('.'$path) as $key) {
            
        $current =& $current[$key];
        }
        $current $value
        sieht zwar erstmal umständlicher aus, hat aber den Vorteil dass 1. klar zwischen Schlüsseln und Wert unterschieden wird und 2. $result schon vorbelegt sein kann, da es nicht überschrieben wird, sondern lediglich der Wert an der spezifizierten Stelle eingefügt wird. Praktisch, wenn $text z.B. eine Zeile in einer Konfigurationsdatei ist.


        Edit: das selbe noch mal etwas schöner:

        PHP-Code:
        $text 'item.test.6.12134.12.12.343=4546';
        $array = array();
        insert_into_array($text$array);

        /**
          * @param string $spec Spezifikation in der Form 'item_1.item_2.[...].item_n=wert'
          * @param array $array Ziel-Array
          */
        function insert_into_array($spec, &$array)
        {
            list(
        $path,$value) = explode('='$spec2);
            
        $current =& $array;
            
        // setze Referenz $current Schritt für Schritt auf $array['item_1']['item_2'][...]['item_n']
            
        foreach(explode('.'$path) as $key) {
                
        $current =& $current[$key];
            }
            
        // belege dieses Array-Element mit $value
            
        $current $value;

        @fschmengler - @fschmengler - @schmengler
        PHP Blog - Magento Entwicklung - CSS Ribbon Generator

        Kommentar


        • #5
          Vorsicht mit foreach und Referenz. Da hatten wir hier mal ein Thema mit seltsamen Seiteneffekten.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Der Code ist mit dieser Eingabe jedenfalls erfolgreich getestet. Kann es sein dass Du so etwas wie foreach($a as &$v) meinst?
            @fschmengler - @fschmengler - @schmengler
            PHP Blog - Magento Entwicklung - CSS Ribbon Generator

            Kommentar


            • #7
              Ja, wahrscheinlich. http://www.php.de/off-topic-diskussi...tml#post493837
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Trotzdem interessant.. ich denke, dadurch dass ich das ganze jetzt in eine Funktion gepackt habe sollte die Gefahr von Seiteneffekten gebannt sein.
                @fschmengler - @fschmengler - @schmengler
                PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                Kommentar

                Lädt...
                X