selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

String in Array wandeln

Autor: Freddy
Datum: 04.06.2014 11:09:47

Hallo,

ich habe folgendes Anliegen: ein String wie "app.env1.db_host" soll in folgende Form gebracht werden: $config['app']['env1']['db_host']. Der String könnte auch so aussehen "lala" oder so "lala1.lala2.lala3.lala4.lala5" etc. Mir will gerade partout nicht einfallen, wie man das in hypsch macht. Einen (falschen) Ansatz füge ich mal an:

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

$config = array();

/**
* Das ist gegeben:
*/
$setting = 'app.env1.db_host';
$value = 'localhost';

/**
* Das soll daraus werden:
* Array ( [app] => Array ( [env1] => Array ( [db_host] => localhost ) ) )
* Also so: $config['app']['env1']['db_host'] = 'localhost';
* Nur wie mache ich das?
*/
// $config['app']['env1']['db_host'] = 'localhost';
// print_r($config);

if (strpos($setting, '.') !== false) {
    $parts = explode('.', $setting);

    if (count($parts)) {
        for ($i = 0; $i < count($parts); $i++) {
            $config[$parts[$i]] = $parts[$i];
            /**
             * Das ist falsch, denn es ergibt:
             * Array ( [app] => app [env1] => env1 [db_host] => db_host )
             * Ist mir auch klar, nur wie bekomme ich o.g. Resultat hin?
             */
        }
    }
}

print_r($config);

?>


Bei jeder Iteration soll ja tiefer verschachtelt werden, und da hängt's gerade. Das alles stellt ein abstrahiertes Problem für eine komplexere Geschichte dar. Quelltext in Farbe: http://nopaste.info/9c106bc74d.html


Gruß,
Freddy



Re: String in Array wandeln

Autor: FelixF
Datum: 09.06.2014 21:59:39

Hallo Freddy,
schaue dir mal den folgenden Beitrag an, falls du noch keine Lösung gefunden hast.

http://stackoverflow.com/questions/7854133/php-one-level-deeper-in-array-each-loop-made

Ich verstehe es zwar selber nicht ganz, aber es sollte dein Problem lösen können.

LG Felix



Re: String in Array wandeln

Autor: Freddy
Datum: 10.06.2014 14:36:46

Hallo,

> schaue dir mal den folgenden Beitrag an, falls du
> noch keine Lösung gefunden hast.

Ich habe in der Tat noch keine (zufriedenstellende) Lösung gefunden. Google hat mich zwar mehrfach zu "StackOverflow" geschickt, aber diesen Thread habe ich nicht gefunden.


> http://stackoverflow.com/questions/7854133/php-one-level-deeper-in-array-each-loop-made
>
> Ich verstehe es zwar selber nicht ganz, aber es
> sollte dein Problem lösen können.

Das tut es. Ich werd im Laufe der Woche ein Beispiel posten. Vielen Dank, Felix. :-)


Gruß,
Freddy



Re: String in Array wandeln

Autor: Freddy
Datum: 16.06.2014 14:03:46

Hallo,

anbei der Lösungsansatz von StackOverflow für mein Problem:

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

$config = array();

/**
* Das ist gegeben:
*/
$setting = 'app.env1.db_host';
$value = 'localhost';

// $config['app']['env1']['db_host'] = 'localhost';
// print_r($config);

if (strpos($setting, '.') !== false) {
    $a = explode('.', $setting);
    $c =& $config;
    foreach ($a as $k) {
        $c[$k] = array();
        $c     =& $c[$k];
    }
    $c = $value;
}

print_r($config);

?>


Gruß,
Freddy