Ankündigung

Einklappen
Keine Ankündigung bisher.

array values in keys umwandeln

Einklappen

Neue Werbung 2019

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.
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      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;

        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

        Kommentar


        • #5
          Vorsicht mit foreach und Referenz. Da hatten wir hier mal ein Thema mit seltsamen Seiteneffekten.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Der Code ist mit dieser Eingabe jedenfalls erfolgreich getestet. Kann es sein dass Du so etwas wie foreach($a as &$v) meinst?
            [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
            [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

            Kommentar


            • #7
              Ja, wahrscheinlich. http://www.php.de/off-topic-diskussi...tml#post493837
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #8
                Trotzdem interessant.. ich denke, dadurch dass ich das ganze jetzt in eine Funktion gepackt habe sollte die Gefahr von Seiteneffekten gebannt sein.
                [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                Kommentar

                Lädt...
                X