我正在创建一个函数,在将数据发送到视图之前从数据库中“清除”数据(转义html以避免使用xss)。所有数据都以1个数组传递。此数组包含包含其他变量和数组的变量和数组,依此类推。
这就是我现在拥有的,它有效,但它看起来并不正确。有没有办法避免为数组中的每个数组通过一个新的foreach?
public function clean_output(&$data)
{
if(!is_array($data))
{
$data = htmlspecialchars($data);
}
else
{
foreach($data as &$data_1)
{
if(!is_array($data_1))
{
$data_1 = htmlspecialchars($data_1);
}
else
{
foreach($data_1 as &$data_2)
{
if(!is_array($data_2))
{
$data_2 = htmlspecialchars($data_2);
}
else
{
foreach($data_2 as &$data_3)
{
$data_3 = htmlspecialchars($data_3);
}
}
}
}
}
}
}
感谢Antoine,我得到了一个新功能。建议仍然欢迎离开!
public function clean_output(&$data)
{
if(!is_array($data))
{
$data = htmlspecialchars($data);
}
else
{
foreach($data as &$data_1)
{
$this->clean_output($data_1);
}
}
}