foreach中不需要的类型转换

皮耶特

为了安全起见,我正在使用一个函数来清理变量。但是,此函数将每个值转换为字符串数据类型,这是我不想要的。

因此,在示例中,当输入参数是整数数据类型时,函数将返回字符串数据类型。

任何想法如何返回完全相同的数据类型?

public function cleanInput($value)
{
    if (is_array($value))
    {
        $newVal = '';
        foreach($value as $field => $value)
        {
            $newVal[$field] = $this->link->real_escape_string($value);
        }
    }
    else
    {
        $newVal = $this->link->real_escape_string(trim(htmlspecialchars($value)));
    }

    return $newVal;
}


  // In example
  $oldData = 20; // input is integer
  $newData = cleanInput($oldData); // output should still be integer
  if (is_int($newData))
  {
     echo "Working!";
  }
  else
  {
     echo "Not working...";
  }
维罗克斯

正如arkascha所说,htmlspecialchars和real_escape_string都返回字符串,这在两者的功能中都有某种暗示。

如果您想要int,float ect并返回原始数据类型,则只需要对它们执行清除即可。无论如何,尝试转义数字类型实际上没有任何意义。

else if (!is_string($value))
{
    return $value;
}

http://php.net/manual/zh/function.is-string.php

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章