16080891(Lamp→研讨会)

自定义函数(Function)

上一篇 / 下一篇  2007-05-03 11:49:53 / 个人分类:PHP学习笔记

 1.声明函数

Function(函数关键字) function_name(函数名称)($argument1,$argument2,....$argutentn(要传递给函数的值))
{
  //函数代码code: 在函数被调用的时候执行一段代码.如果有两条或者多条语句,则代码必须用大括号"{}"括起来.但是,如果只有一条代码,则不需要大括号.
  Return 返回值: 将调用的代码需要的值返回.任何类型都可以返回,包括列表和对象.这导致函数立即结束它的运行,并且将控制权传递回它被调用的行.
}

 2.无参函数应用
  //该函数无返回值
 <?php
  function foo()
   {
     echo "天气好热<br>";
     echo "希望明天下雨<br>";
   }

  echo "函数还没有被调用呢!<br>";
 foo(); //开始调用函数
  echo "函数调用成功!";
 ?>

输出结果:
函数还没有被调用呢!
天气好热
希望明天下雨
函数调用成功!

 3.有参数函数

  php支持按值传递参数(默认),通过引用传递和默认参数值.可变长度参数列表仅在PHP4和后续版本中被支持.
  (1).值传递参数:按值进行参数传递是PHP的默认传递方式.使用这个方法,必须在主程序调用时传递一个值(参数).

例:
  <?php
     function sum($a,$b)
     {
       echo $a+$b;
     }
    sum(10,20); //开始调用该函数
   ?>

输出结果:
30
    (2).引用传递:在按照值传递的时候,只有参数的副本传递给被调用的函数.但是在被调用函数内部对这些值的任何修改,都不会影响调用函数中的原始值.引用传递其实也就是地址传递,将一个变量作为参数传递.

例:
   <?php
     $myNum=100;
     function Valuechange($number)
      {
        $number=$number+1;
        echo $number."<br>";
      }
      Valuechange($myNum);
      echo $myNum;
   ?>

输出结果:
101
100

  从上面的结果可以看出,虽然在函数内部将$number的值增加了,但是实际上并没有改变$myNum的值.

  很多时候,将一个参数传递给函数,而且该函数的新值要返回给调用程序,由于值传递不能实现,可以通过引用来进行.

  通过引用传递参数比较简单,只需要直接在参数前面添加"&"符号就可以.

 例:
      <?php
     $myNum=100;
     function Valuechange($number)
      {
        $number=$number+1;
        echo $number."<br>";
      }
      Valuechange(&$myNum);
      echo $myNum;
   ?>
输出结果:
101
101

从输出结果可以看到,通过引用传递,变量$myNum的值在函数内部被改变了.

 (3).默认传递:使用默认的参数值传递方法,函数必须在调用的时候有一个参数.如果没有要使用的值,就把默认值传递给函数参数.
   默认值必须是常量表达式,不是变量、类成员或者函数调用.
提示: 当使用默认参数时,任何默认参数必须放在非默认参数的右侧;否则,可能函数不会按照预期的情况工作.

例:
  <?php
   //默认值的应用
  function hobby($style="运动")
  {
    return "我喜欢$style<br>";
  }
  echo hobby();
  echo hobby("唱歌");

  function hobby_1($who,$type="跳舞")
  {
    return "$who 喜欢 $type<br>";
  }

  echo hobby_1("张三");
  echo hobby_1("第三","逛街");

  //默认值的不正确使用,默认值必须在其他参数的右边
  //因为会产生警告信息
/*20:*/      function hobby_2($type="跳舞",$who)
  {
    return "$who 喜欢 $type<br>";
  }
 
/*25:*/      echo hobby_2("张三");
  //但是下面的调用方法可以
  //但是默认值就失去了意义
 ?>

输出结果:
我喜欢运动
我喜欢唱歌
张三 喜欢 跳舞
第三 喜欢 逛街

Warning: Missing argument 2 for hobby_2(), called in D:\AppServ\www\Test\a_inc.php on line 25 and defined inD:\AppServ\www\Test\a_inc.phpon line20
喜欢 张三

   从输出结果可以看出,前面两个函数正常运行,而最后一个函数,则出现参数警告,显示结果为"喜欢张三".因为此时默认参数没有发挥作用.但是如果改成"hobby_2("爬山","张三")"还是可以运行的,但默认参数就失去了意义了.

 (4).函数返回值:如果在一个函数中调用Return()语句,将立即结束函数的执行,并将它的参数作为参数的值返回.return()会终止eval()语句或者脚本文件的执行.
    如果在全局范围中调用,则当前脚本文件中止运行.如果当前脚本文件是被include(),则return()的值会被当作include()调用的返回值.如果在主脚本文件中调用return(),则脚本中止运行.如果当前脚本文件是在php.ini中的配置选项auto_prepend_file或者auto_append_file所指定的,则此脚本文件中止运行.

  注意:既然return()是语言结构而不是函数,并不需要用括号将参数括起来.事实上不用括号比用括号更常见,尽管用哪一种并无所谓.

例:
  <?php
    function square($num)
    {
      return $num * $num;
    }
   echo "返回值为:".square(4).'<br>';

  //通过数组返回多个数值
   function small_numbers()
   {
     return array(0,1,2);
   }
   list ($zero,$one,$two)=small_numbers();
   echo "返回值为:<br> $zero<br> $one<br> $two";
  ?>

输出结果:
返回值为:16
返回值为:
0
1
2


TAG: php学习笔记 PHP学习笔记

引用 删除 凭轩听雨   /   2007-05-14 11:25:37
好!
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar