<?php
$a = $_GET['a'];
check($a);function check(&$val) {
if(!preg_match('/^[a-z0-9]/', $val)) {
die("request error");
}
}
?>
如果把function check(&$val) 写成 function check($val),这二者有什么区别?

解决方案 »

  1.   

    这是我做的笔记,你可以看一下。
    函数参数传递
    解释:将函数实参列表传递到函数定义的实参列表中去,别想的太复杂,就一个简单东西术语话。
        按数值进行传递:将实参中的数据或者变量复制一个副本到形参中去,形参在函数内改变,不影响实参的数据。
        按地址进行传递:将实参中的变量的地址出传递到形参中去,形参在函数内改变,那么实参的数据也会改变。
        格式是在形参前面加&.
        下面是上面2个的比较
      
      <?php
        $a=10;
        $b=20;
        function addone($s,$t)
        //若是按数值传递,传递的是数值,实参和形参参数列表列表大的个数要相同,并且赋值时要一一对应。
        //若是按地址赋值,则可以这样写    function addone(&$s,&$t)
        {
           $s=$s+1;
           $t=$t+1;
           echo "s=".$s."<br/-->";
           echo "t=".$t."<br>";
        }
        addone($a,$b);
        echo "a="."$a"."<br>";
        echo "b="."$b"."<br>";
        ?>
      

  2.   

    <br/-->改成<br/>,使用的插件问题。
      

  3.   

    你的这段代码 没有区别 因为 你没有去操作$val这条数据