Frage zu array_walk_recursive

3 views
Skip to first unread message

Daniel Walz

unread,
Feb 1, 2021, 2:46:12 PMFeb 1
to
Hallo,

für eine simple Template-Klasse bzw. Singleton brauche ich eine Funktion
zum escapen der Platzhalter-Variablen. Diese werden in einem Array
übergeben, das auch geschachtelt sein kann. Ich habe mir dafür diese
rekursive Funktion geschrieben:

public static function escape($var)
{
$esc_var = [];
if (is_array($var))
{
foreach ($var as $platzhalter => $ersetzung)
{
if (is_array($ersetzung))
{
$esc_var[$platzhalter] = self::escape($ersetzung);
}
else
{
$esc_var[$platzhalter] = htmlspecialchars($ersetzung);
}
}
return $esc_var;
}
else
{
return htmlspecialchars($var);
}
}


Danach fiel mir auf, dass es ja in PHP bereits eine Funktion
array_walk_recursive gibt, so dass das hier das gleiche zu machen scheint:

public static function escape($var)
{
if (is_array($var))
{
array_walk_recursive($var, function (&$value, $key)
{
$value = htmlspecialchars($value);
});
return $var;
}
else
{
return htmlspecialchars($var);
}
}

Meine Frage:
Machen die beiden Funktionen tatsächlich das gleiche (bei all meinen
Tests bisher ja), oder habe ich irgendwas übersehen?

Auf php.net steht als Warnung groß "* THIS FUNCTION ONLY VISITS LEAF
NODES *, aber das entspricht ja hier genau dme gewünschten Verhalten,
wenn ich es richtig verstehe.


Gruß
Daniel
Reply all
Reply to author
Forward
0 new messages