我对 PHP 的引用(&)有一个奇怪的问题。
假设我有一个看起来像这样的表单:
<form name="form1" id="form1" method="post">
Name: <input type="text" name="name" /><br />
Email: <input type="text" name="email" /><br />
Location: <input type="text" name="location" /><br />
Phone Number: <input type="text" name="phonenumber" /><br />
</form>
然后我将该表单提交给另一个 PHP 处理程序。处理程序这样做:
foreach($_POST as $name => &$value)
{
//more code here
}
echo $_POST['phonenumber']; //Returns value of $_POST['location'] for some reason
有人可以向我解释为什么电话号码的价值将是任何位置的价值吗?即使 foreach 内部没有代码,它仍然会这样做。
编辑:
对于那些想知道 foreach 内部发生了什么,或者我为什么要这样做的人,这是因为它是一种将所有提交给处理程序的数据转义的干净方法,而不是手动一次执行一个变量,尤其是当你有动态输入进来。所以像这样:
foreach($_POST as $name => &$value)
{
$value = preg_replace( "/[<>#$%]/", "", $value);
$value = preg_replace('/\s\s+/', ' ', $value);
}
除了我上面提到的问题外,它工作得很好。