Blogger Information
Blog 12
fans 0
comment 0
visits 5929
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php基础知识02函数
sea
Original
342 people have browsed it

关于函数的基础知识

函数声明与调用

  1. function fnArea() {
  2. return 20.5;
  3. }
  4. echo fnArea();

参数的传递方式

  • 按值传递参数
  1. function fnArea($pi,$r){
  2. return $pi * $r * $r;
  3. }
  4. echo fnArea(3.14,10);
  • 按引用传递参数
  1. function fnArea(&$pi) {
  2. $pi ++;
  3. }
  4. $mypi = 3.14;
  5. fnArea($mypi); //传递的实参必须是变量
  6. echo $mypi; //4.14,pi就像mypi的影子,$pi的数据是和$mypi对应的
  • 可变参数
    传入的实参不确定,不设置形参,通过提供的函数获取实参
    • func_num_args() 返回参数个数
    • func_get_arg(索引) 返回参数列表的某一项
  1. function fnList() {
  2. $count = 0;
  3. for ($i = 0; $i < func_num_args(); $i++) {
  4. $count += func_get_arg($i);
  5. }
  6. return $count;
  7. }
  8. echo fnList(1,2,3); //6,这里通过将传入的参数累加
  • 默认参数
    实参数量少于形参数量,通过设置默认形参
  1. function fnArea ($r, $pi=3.14) { //位置不能动,仅只能在右边设值
  2. return $pi * $r * $r;
  3. }
  4. echo fnArea(10);

作用域

  • 局部作用域
    • 函数内部的变量称为局部变量,传递过来的形参,函数内部声明的变量
    • 外部无法访问函数内部的局部变量,仅可以在函数内部访问
  1. function fnList($name) {
  2. $count = 1;
  3. echo $name . '第' . $count . '次访问</br>';
  4. }
  5. fnList('sea');
  6. echo $count; // Notice: Undefined variable: count 报错
  7. echo $name; // Notice: Undefined variable: name 报错
  • 全局作用域
    • 在函数外部声明的变量可以在函数内部使用,在 php 中需要手动开启
    • 使用 global 关键字的变量,在函数内部对此变量进行赋值,随着更改而更改,是同一个变量
  1. $count = 10;
  2. function fnList($name) {
  3. global $count;
  4. echo $name . '第' . $count . '次访问</br>';
  5. $count++;
  6. }
  7. fnList('sea');
  8. echo $count; //11
  • 静态变量
    • 静态变量会使函数被调用多次时,内部的这个变量不会被销毁
    • 此变量的作用域不改变,还是在函数内部
  1. function fnList($name) {
  2. static $count = 1;
  3. echo $name . '第' . $count . '次访问</br>';
  4. $count++;
  5. }
  6. fnList('sea'); //sea第1次访问
  7. fnList('sea'); //sea第2次访问
  8. fnList('sea'); //sea第3次访问
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post