美文网首页
PHP-自定义函数和内部函数

PHP-自定义函数和内部函数

作者: AGEGG | 来源:发表于2019-03-14 13:11 被阅读0次

变量作用域与静态变量

函数的参数及函数的引用传递
函数的返回值及引用返回
外部文件的导入
系统内置函数

变量的作用域也成变量的范围,变量的范围即它定义的上下文背景(也是它生效范围)。大部分的php变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件
global关键字
$GLOBALS 及 其他超全局数组

$outer = 'str';//全局变量
function myfunc()
{
  global $outer;//使用global可以拿到全局变量
  echo $outer;//局部变量,没有global拿不到全局变量
}
$outer = 'str';
function myfunc()
{
  global $outer;
      $GLOBALS['outer'];
}

静态变量

静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不会消失。

static关键字
1.仅初始化一次
2.初始化时需要赋值
3.每次执行函数该值会保留
4.static修饰的变量是局部的,仅在函数内部有效
5.可以记录函数的调用次数,从而可以在某些条件下终止递归

function myfunc()
{
static $a = 1;
echo $a++;
//myfunc()-->1
//myfunc()-->2
//myfunc()-->3
}

EX

$count = 5
function get_count()
{
     static $count;//第一次未初始化为NULL
      return $count++;//先return后++,第一次为NULL,第二次为第一次++的1
}
echo $count;//5
++$count;
echo get_count();//NULL
echo get_count();1

函数的参数

默认情况下,函数通过值传递
如果希望允许函数修改它的值,必须通过引用传递参数

$a = 1;
function myFunc(&$a)//引用传参可以修改参数的值
{
  $a = 2;
}
myFunc($a);//只能传变量
echo $a;

函数的返回值

值通过使用可选的返回语句(return)返回
可以返回包括数组和对象的任意类型
返回语句会终止函数执行,将控制权交回函数调用处
省略return,返回值为NULL,不可有多个返回值

函数的引用返回
从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符&

function &myfunc()
{
$static $b = 10;
return $b;
}
$a = myfunc();//10
$a = &myfunc();//10
$a = 100;
echo myfunc();//100

外部文件的导入

include/require语句包含并运行指定文件
如果给出路径名按照路径来找,否则从include_path中查找
如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找
当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围

加载过程中未找到文件则include结构会发出一条警告;这一点和require不同,require会发出一个致命错误
require在出错时产生E_COMPILE_ERROR级别的错误。
换句话说将导致脚本终止而include只产生警告(E_WARNING),脚本会继续运行。

require(include)/require_one(include_once)唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。

系统内置函数

//时间日期函数
date(),strtotime(),mktime(),time(),microtime(),date_default_timezone_set()
//IP处理函数
ip2long(),long2ip()
//打印处理
print(),printf(),print_r(),echo,sprintf(),var_dump(),var_export()
//序列化及反序列化函数
serialize(),unserialize()
//字符串处理函数
implode(),explode(),join(),strrev(),trim(),ltrim(),rtrim(),strstr(),number_format()
//数组处理函数
array_keys(),array_values(),array_diff(),array_intersect(),array_merge(),array_shift(),array_unshift(),array_pop(),array_push,sort()

EX

<?php

$var1 = 5;
$var2 = 10;

function foo(&$my_var)
{
    global $var1;//5
    $var1 += 2;//7
    $var2 = 4;//4
    $my_var += 3;//8
    return $var2;//4
}

$my_var = 5;
echo foo($my_var). "\n";//4
echo $my_var. "\n";//8//引用地址为8
echo $var1;//7 global变成全局,函数内为7
echo $var2;//10//本身为全局的10
$bar = 'foo';
$my_var = 10;
echo $bar($my_var). "\n";//4

相关文章

  • PHP-自定义函数和内部函数

    变量作用域与静态变量 函数的参数及函数的引用传递函数的返回值及引用返回外部文件的导入系统内置函数 变量的作用域也成...

  • php函数应用

    自定义函数语法格式 自定义函数参数 自定义函数返回值 局部变量 函数内部声明的变量, 只能在函数内部调用, 这就是...

  • js高级程序设计阅读摘录4

    自定义函数实现sort排序(排查诡异默认排序) 函数内部属性 在函数内部,有两个特殊的对象:arguments 和...

  • PHP全栈学习笔记32

    php自定义函数之匿名函数所谓匿名,就是没有名字。匿名函数,也就是没有函数名的函数。 变量函数式的匿名函数 内部函...

  • PHP全栈学习笔记32

    php自定义函数之匿名函数所谓匿名,就是没有名字。匿名函数,也就是没有函数名的函数。 变量函数式的匿名函数 内部函...

  • 6.2.2.构造函数模式

    可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法 与之前的工厂模式不同的是: 没有在函数内部显示的创建...

  • Kotlin函数式编程 (4)✔️内联函数

    ✔️自定义内联函数使用 let 函数使用 with 函数使用 apply 函数with 和 apply 函数区别?...

  • 内部函数和外部函数

    函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数只能被本文件调用,而不能被其他文件调用。根...

  • 闭包函数

    一个函数内部可以定义一个函数,并且函数的返回值是这个内部函数,内部函数使用了原函数的内部变量。返回内部函数时,内部...

  • 关于angular $filter,自定义函数过滤和自定义过滤器

    关于$filter的自定义过滤器。要是定义在moduler内部使用自定义函数的方式,那么传入该函数的是object...

网友评论

      本文标题:PHP-自定义函数和内部函数

      本文链接:https://www.haomeiwen.com/subject/bbkxmqtx.html