Seite 1 von 1

String zu mehrdimensionalem Array machen

Verfasst: 18.02.2022 10:06
von beneboy
Hallo zusammen,

ich hab in der DB Template-Variablen gespeichert, bspw.: slider.item1.headline1 = "Headline1".
Ich verwende Symfony-Framework. Wenn ich einfach "slider.item1.headline1" an das Twig-Template weitergeb, wird das nicht verwendet, weil die Punkte als mehrdimensionales Array (oder verschachteltes Objekt) interpretiert werden (https://symfony.com/doc/current/templat ... -variables).

Ich hab mir jetzt eine Routine gebaut die den String in ein mehrdimensionales Array umwandelt.
Mir gefällt aber das eval() nicht, PHP-Storm mag es auch nicht, wird als Fehler markiert.
Wie könnte man das schöner lösen (ohne eval)?

Hier meine Methode:

Code: Alles auswählen

		protected function convertTemplateVarsFromDatabase($tplvars): array
		{
			$myvar = [];
			foreach ($tplvars as $tv)
			{
				$handle   = preg_replace('/[^a-zA-Z0-9._]/', '_', $tv['handle']);
				$tplsplit = explode('.', $handle);
				
				$mem = "";
				foreach ($tplsplit as $eitem)
				{
					$mem .= "['" . $eitem . "']";
				}
				
				$content = $tv['htmltext'];
				eval('$myvar' . $mem . ' = $content;');
			}
			
			return $myvar;
		}
Vielen Dank schon mal.
Beste Grüße, Beneboy

Re: String zu mehrdimensionalem Array machen

Verfasst: 22.02.2022 10:41
von beneboy
Ich hab bei Stackoverflow eine Lösung bekommen. Hier die Antwort, vielleicht hilft es mal jemandem:
https://stackoverflow.com/questions/712 ... onal-array