代码有什么不同

时间:2014-01-11 16:22:06

标签: php

以下代码用于清理已过帐的值。有人可以告诉我,有什么区别,

<?php
  function sanitize_data(&$value, $key) {
  $value = strip_tags($value);
}
array_walk($_POST['keyword'],"sanitize_data");
?>

<?php
  function sanitize_data($value, $key) {
  $value = strip_tags($value);
}
array_walk($_POST['keyword'],"sanitize_data");
?>

由于

5 个答案:

答案 0 :(得分:0)

第一个使用值作为参考,因此每次使用某个变量调用它时,变量都将在外部作用域中更改,而不仅仅是在函数本身中。

如果您想了解更多信息,请查看manual for 'reference'

答案 1 :(得分:0)

它被称为“按参考传递”。 &$value将与通过指针传递给函数的原始$value相关,而不是处理函数版本。

请参阅PHP Manual

答案 2 :(得分:0)

第一个函数第一个参数的值是通过引用传递的,而第二个参数则不是。如果变量是通过引用传递的,则对函数作用域外的值(在您调用函数的作用域中)也将对其进行更改。

另请阅读PHP documentation (pass by reference),并在array_walk doc page上进行了演示。

答案 3 :(得分:0)

第一种方法称为“将值作为参考传递”。 因此$_POST数组值已更改。

第二种方法不会更改$_POST

的值

您可以查看SO链接:关于它的精彩解释。

https://stackoverflow.com/a/2157816/270037

答案 4 :(得分:0)

第一个函数获取$value passed by reference,因此可以直接修改它,第二个函数会传递$value的值。