自定义函数

  变量的作用域和静态变量

     变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围)。

     大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件。

  global  关键字

  $GLOBALS 及其他超全局数组

$outer = 'str'; //全局变量   不能拿到函数体内部使用
function mgfunc()
{
global $outer; //使用global关键字 可以把外部变量拿到内部使用
$GLOBALS['outer']; // 也可以把全局变量拿到函数内部使用
echo $outer; //局部变量 和外部变量没有关联
}

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

      static关键字

        1、仅初始化一次

        2、初始化时需要赋值

        3、每次执行函数该值会保留

        4、static修饰的变量是局部的,仅在函数内部有效

        5、可以记录函数的调用次数,从而可以在某些条件下终止递归

      

function mgfunc()
{
static $a = 1; echo $a++;
} myfunc(); //第一次调用 结果为1 myfunc(); //第二次调用 结果为2 myfunc(); //第三次调用 结果为3 //以上结果证明 static关键字声明静态变量 其值不会消失

  延伸:函数的参数及参数的引用传递

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

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

$a = 1;
function myfunc( $a )
{
$a = 2;
} myfunc($a);
echo $a; //输出结果为1 函数内部变量值改变与外部变量没有关系 //如果 希望内部函数修改全局变量的值 需要通过引用传参的方式& $a = 1;
function myfunc( &$a )
{
$a = 2;
} myfunc($a); //只能传变量
echo $a; //输出结果为2
  延伸:函数的返回值及引用返回

    函数的返回

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

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

    返回语句会终止函数执行,将控制权交回函数调用处

    省略return,返回值为null ,不可有多个返回值     返回多个值  可以返回一个数组   把值放在一个数组中

    引用返回

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

    

function &myfunc()
{ static $b = 10 ;
return $b; } echo myfunc(); //结果10 正常调用 $a = &myfunc(); // 此时就是把$a 和$b 互为引用 $a = 100; echo myfunc(); //结果为100;
  延伸:外部文件的导入

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

  如果给出路径名按照路径来找,否则从include_path查找

  如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找

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

  include和require的区别

  加载过程中未找到文件则include结构会发出一条警告;这一点和require不同,后者会发出一个致命错误。

  require在出错时产生E_COMPILE_ERROR级别的错误。就是说将导致脚本终止。

  include只会产生警告(E_WARNING),脚本会继续执行。

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

  延伸:系统内置函数

  时间日期函数

    

   //格式化一个日期
date() //将任何字符串的时间日期解析为时间戳
 strtotime() //取得一个日期的时间戳
 mktime() //返回当前时间戳
 time()    //返回当前Unix时间戳的微秒数
 microtime() //在脚本中动态设置所有日期时间的时区
 date_default_timezone_set() //获取脚本所有日期时间使用的时区
 date_default_timezone_get()

  ip处理函数

    

//把IP转换为整型数字(便于存储数据库)
ip2long()
//相反 把整型数字转换为IP
long2ip()

  打印处理函数

    

print()  echo()   //都是语言结构   不同是print只能打印一个   echo可以打印多个  用逗号隔开

printf()   sprintf()  //printf会根据格式进行输出   sprintf会返回不会输出

var_dump()   print_r()
//print_r会将数组对象格式化好打印出来 打印false不会有输出打印true输出1
// var_dump会把类型也打印出来 var_export() //将内容格式化输出 结果符合PHP语法结构

  序列化及反序列化函数

    

//序列化用于存储或传递PHP值过程中,同时不丢失其类型和结构

//序列化
serialize() //反序列化
unserialize() //序列化函数原型如下
string serialize (mixed $value) //反序列化函数如下 mixed unserialize (sting $str)

  字符串处理函数

 //返回字符串长度
strlen()
例:strlen("hello world!");
输出:12 //查找字符串内指定的字符或文本
strpos()
例:strpos("hello world","world");
输出:world //将一个一维数组转化为字符串
implode()
例:$array = array('a','b','c');
$str = implode(',' , $array);
输出:a,b,c //将一个字符串转化为数组
 explode()
例:$str = "a,b,c";
$array = explode(',' , $str);
输出:Array ( [0] => a [1] => b [2] => c ) //implode 的别名
 join()
例:$arr = array('Hello','World!','I','love','Shanghai!');
echo join(" ",$arr);
输出:Hello World! I love Shanghai! //反转字符串
 strrev()
例:echo strrev("I love Shanghai!");
输出:!iahgnahS evol I //移除字符串两侧的空白字符和其他字符。
trim()
例:$str = "Hello World!";
echo trim($str,"Hed!");
输出:llo Worl //移除字符串左侧的空白字符或其他字符
 ltrim()
例:$str = "Hello World!";
echo ltrim($str,"Hello");
输出:World! //移出字符串右侧的空白字符或其他字符
 rtrim()
例: $str = "Hello World!";
echo rtrim($str,"World!");
输出:Hello //搜索字符串在另一字符串第一次出现 返回字符串的剩余部分
 strstr()
例:echo strstr("I love Shanghai!","Shanghai");
输出:Shanghai! //通过千位分组来格式化数字
 number_format()
例:echo number_format("5000000");
输出:5,000,000

  数组处理函数

    

//返回数组中的所有键名
array_keys()
例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach");
print_r(array_keys($a));
输出:Array ( [0] => a [1] => b [2] => c ) //返回数组中的所有值
array_values()
例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach");
print_r(array_values($a));
输出:Array ( [0] => apple [1] => pear [2] => peach ) //返会数组差集
array_diff()
例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach","d"=>"banana");
$b=array("a"=>"apple","b"=>"pear","c"=>"peach");
print_r(array_diff($a,$b));
输出:Array ( [d] => banana ) //返回数组交集
array_intersect()
例:$a=array("a"=>"apple","b"=>"pear","c"=>"peach","d"=>"banana");
$b=array("a"=>"apple","b"=>"pear","c"=>"peach");
print_r(array_intersect($a,$b));
输出:Array ( [a] => apple [b] => pear [c] => peach ) //合并数组 返回一个新的数组
array_merge()
例:$a=array("c"=>"peach","d"=>"banana");
$b=array("a"=>"apple","b"=>"pear");
print_r(array_merge($a,$b));
输出:Array ( [c] => peach [d] => banana [a] => apple [b] => pear ) //删除数组中的首个元素,并返回删除元素的值
array_shift()
例:$a=array("c"=>"peach","d"=>"banana");
print_r(array_shift($a));
输出:peach //在数组开头插入一个或多个值 返回新数组元素个数
array_unshift()
例:$a=array("c"=>"peach","d"=>"banana");
print_r(array_unshift($a,'apple'));
输出:3 //删除数组的最后一个元素(出栈) 返回删除的值
array_pop()
例:$a=array("c"=>"peach","d"=>"banana");
print_r(array_pop($a));
输出:banana //在数组的最后加入一个元素(入栈) 返回新数组的元素个数
array_push()
例:$a=array("c"=>"peach","d"=>"banana");
print_r(array_push($a, "apple"));
输出:3 //对数组进行排序 升序排序 成功返回true 失败返回false
sort() 
例:$array = array(4,6,2,22,11);
var_dump(sort($array));
输出:true  //对数组进排序 降序排序 成功返回true 失败返回false
rsort();
例:$array = array(4,6,2,22,11);
var_dump(rsort($array));
输出:true

重点记忆PHP函数的定义相关内容,理解变量作用域,静态变量,函数的参数和返回值的相关内容,重点记忆上面的内置函数

更多PHP内部函数 请访问

PHP面试 PHP基础知识 五(自定义函数和内部函数)的更多相关文章

  1. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  2. php面试笔记(5)-php基础知识-自定义函数及内部函数考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...

  3. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  4. python基础-基础知识(包括:函数递归等知识)

    老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...

  5. 死磕面试 - Dubbo基础知识37问(必须掌握)

    作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基 ...

  6. Python基础11- 函数之自定义函数

    自定义函数语法结构:def fun1([x],[y],....): 语句1 语句2 使用def语句来定义函数,在def后依次写出函数名.小括号.参数(可无).冒号,然后缩进写函数体 1.无参函数:de ...

  7. php基础知识考察点:自定义函数及内部函数考察点

    1.变量的作用域和静态变量 函数的参数以及参数的引用传递 函数的返回值以及引用返回 外部文件的导入 系统内置函数的考察 变量的作用域也称为变量的范围,变量的范围即他定义上下文的背景(也是它生效的范围) ...

  8. C++基础知识:成员函数、对象拷贝、私有成员

    一.综述 类是我们自己定义的数据类型(新类型) 设计类时要考虑的角度: (1)站在设计和实现者的角度来考虑 (2)站在使用者的角度来考虑 (3)父类,子类 二.类基础 (1)一个类就是一个用户自己定义 ...

  9. python基础知识五

    数据结构基本上就是---它们可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python中有三种内建的数据结构---列表.元祖和字典. 我们将会学习如何使用它们,以及它们如何使编程变得 ...

随机推荐

  1. 通过findViewById()方法从layout中获取view并进行相应的转换时提示:"Cannot cast from View to AutoCompleteTextView"的解决办法!(转+自己错误)

    转:http://blog.csdn.net/zyz511919766/article/details/7453864 代码: package zyz.example.autocompletetext ...

  2. java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】

    转: java 实现一套流程管理.流转的思路(伪工作流) 在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理. 以下提 ...

  3. 网神SecVSS 3600漏洞扫描系统

    网神SecVSS 3600漏洞扫描系统严格按照计算机信息系统安全的国家标准.相关行业标准设计.编写.制造.网神SecVSS 3600漏洞扫描系统可以对不同操作系统下的计算机(在可扫描IP范围内)进行漏 ...

  4. C/s模式&&B/S模式

    C/s模式:是客户端/服务器(Client/Server)模式,主要指的是传统的桌面级的应用程序.比如我们经常用的信息管理系统. C/S 客户端/服务器 例如QQ,网络游戏,需要下载客户端才能访问服务 ...

  5. filter 在CSS用的效果

    滤镜说明: Alpha:设置透明层次 blur:创建高速度移动效果,即模糊效果 Chroma:制作专用颜色透明 DropShadow:创建对象的固定影子 FlipH:创建水平镜像图片 FlipV:创建 ...

  6. Eureka 系列(07)服务注册与主动下线

    Eureka 系列(07)服务注册与主动下线 [TOC] Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(05)消息广播 中对 Eureka 消息广播的源码进行 ...

  7. Mybatis缓存1----系统缓存及简单配置介绍

      mybatis缓存 系统缓存:常用的一级缓存和二级缓存 一级缓存 一级缓存是SqlSession级别的缓存,在操作数据库时需要构建SqlSession对象,在对象中有一个数据结构用于存储缓存数据. ...

  8. c# Winform实现发送邮件

    邮件发送类 来源网上 稍作调整...出处忘了 /** * 命名空间: EmailSend * 类 名: EmailSend * * 作者        变更内容            变更日期 * ─ ...

  9. zabbix--External checks 外部命令检测

    概述zabbix server 运行脚本或者二进制文件来执行外部检测,外部检测不需要在被监控端运行任何 agentditem key 语法如下: 参数 定义 script shell 脚本或者二进制文 ...

  10. linux网络配置 转

    1.常用配置网络指令 (1) 配置eth0的IP地址, 同时激活该设备 1 sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up (2) 添 ...