函数概念:

函数是用来完成某种特定任务的可重用代码块;

函数可以使程序更具模块化,拥有良好的结构;

函数定义后在程序中可以重复调用;

函数分为内置函数和自定义函数

考点:

变量的作用域和静态变量

延伸1,函数的参数及参数的引用传递。

延伸2,函数的返回值及引用返回。

延伸3,外部文件的导入。

延伸4,系统内置函数。

1.变量的作用域

变量的作用域也称变量的范围,变量的范围即它定义的上下文背景(也是它的生效范围)。大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件。

<?php

$c = 5;//全局变量

function get_count()

{

  $c;//局部变量$c=null;

  return $c;

}

echo $c;//5

echo get_count();//null

global关键字

<?php

$c = 5;//全局变量

function get_count()

{

  global $c;//全局变量$c=5;

  $GLOBALS['c'];//超全局变量,可以直接拿来用。

  return $c;

}

echo $c;//5

echo get_count();//5

2.静态变量static

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

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

function myFunc()

{

  static $a = 1;//静态变量初始化

  $a++;

  return $a;

}

myFunc();//2

myFunc();//3

延伸1,函数的参数及参数的引用传递。

默认情况下,函数参数通过值传递。

如果希望允许函数修改它的值,必须通过引用传递参数。

$a = 1;

function myFun($a){//值传递

  $a = 2;

}

myFun($a);

echo $a;//1

$a = 1;

function myFun(&$a){//引用传递

  $a = 2;

}

myFun($a);

echo $a;//2

延伸2,函数的返回值及引用返回。

只通过使用可选的返回语句(return)返回。

可以返回包括数组和对象的任意类型。

返回语句中止函数执行,将控制权教会函数调用处。

省略return,返回值为null,不可以有多个返回值。

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

function &mgFUNC()

{

  static $b = 10;

  return $b;

}

$a = mgFunc();//10

$a = &mgFunc();//引用

$a = 100;

echo mgFunc();//100

延伸3,外部文件的导入。

include/require语句包含并运行指定文件。

如果给出路径名按照路经来找,否则从include_path中查找;如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找。

当一个文件被包含时,其中所包含的代码继承了include所在行的变范围。

区别:

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

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

延伸4,系统内置函数

1.时间日期函数

date()\strtotime()\mktime()\time()\microtime()\date_default_timezone_set().

2.打印处理

print()(语句)\printf()\print_r()\echo(语句)\sprintf()\var_dump()\var_export().

3.序列化及反序列化函数

serialize()\unserialize()

4.字符串处理函数

implode()\explode()\join()\strrev()\trim()\ltrim()\rtrim()\stratr()\number_format()...

5.数组处理函数

array_keys()\array_values()\array_diff()\array_intersect()\array_merge()\array_shift()\array_unshift()\array_pop()\array_push()\sort()等

PHP基础之函数的更多相关文章

  1. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  2. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  3. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  4. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  5. Java之--Java语言基础组成—函数

    Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...

  6. 数据分析与展示——Matplotlib基础绘图函数示例

    Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...

  7. JavaSE语法基础(3)---函数、数组

    JavaSE语法基础(3)---函数.数组 函数的概念:实现特定功能的一段代码,可反复使用. 函数的出现减少代码冗余,提高代码的复用性,可读性,可维护性,可以使每个功能模块独立起来,方便分工合作. 函 ...

  8. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  9. Go语言基础之函数

    Go语言基础之函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于“一等公民”. 函数 ...

  10. 第二周 数据分析之展示 Matplotlib基础绘图函数实例

    Pyplot基础图表函数 Pyplot饼图的绘制: Pyplot直方图的绘制: Pyplot极坐标图的绘制: Pyplot散点图的绘制: 单元小结: import numpy as np import ...

随机推荐

  1. 物聯網安全黑客松 IoT Security and Privacy Hackathon

    感覺這次黑客松的程度屬於初階,但是節奏很快,內容緊湊.概念部分解說較多,以致實驗時間縮短,有些只能看demo有點遺憾.幸好有video-taped,事後回溯可以看看能不能replicate實驗.總體而 ...

  2. 详解JDBC对象

    1. DriverManager (1) 注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 真正注册驱动的是驱动包下 jdbc 文件夹 ...

  3. qt 加载翻译文件 qm

    QTranslator* myTranslator=new QTranslator; myTranslator->load("xxx.qm"); app.installTra ...

  4. PHP中定义常量的区别,define() 与 const

      正文 在PHP5.3中,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区 ...

  5. Link static data in sql source control

    You can link data that doesn't change very often to SQL Source Control. This lets you commit data ch ...

  6. [Scikit-learn] 1.1 Generalized Linear Models - from Linear Regression to L1&L2

    Introduction 一.Scikit-learning 广义线性模型 From: http://sklearn.lzjqsdd.com/modules/linear_model.html#ord ...

  7. PostgreSQL学习笔记——事务

    事务时需要在同一处理单元中执行的一系列更新处理的集合.通过使用事务,可以对数据库中的数据更新处理的提交和取消进行管理. 事务处理的终止指令包括COMMIT(提交处理)和ROLLBACK(取消处理)两种 ...

  8. 如何去除PATH里的重复项并排序

    注意sed的用法,linux和Mac os不同,linux是Gnu的,Mac是BSD的 PATH排序去掉重复内容 mac和linux的换行符替换方法不一样,如下是Mac下的操作 export PATH ...

  9. 【搬运】NumPy_for_Matlab_Users

    搬运自:http://scipy.github.io/old-wiki/pages/NumPy_for_Matlab_Users.html. 1.Introduction MATLAB和NumPy/S ...

  10. 【VS开发】fatal error C1001:编译器中发生内部错误

    自己编译boost的库文件时遇到这个错误的,大概报错情况如下:  mp_defer.hpp<50>:fatal error C1001:编译器中发生内部错误.  1> 要解决此问题, ...