3.1 初识函数

3.1.1 函数的定义

  语法:

function 函数名([参数1,参数2,......])
{函数体
}

  (1)function:在声明函数时必须使用的关键字

  (2)函数名:创建函数的名称,是有效的PHP标识符

     ①函数名是唯一的,不能重复定义;

     ②由字母、数字、下划线组成,必须以英文字母或者下划线开头;

     ③函数名不区分大小写,常量和变量区分大小写;

     ④采用骆驼命名法,第一个单词首字母小写,后续单词首字母大写;(建议)

     ⑤获取数据以get开头,设置数据以set开头,删除数据以del开头;(建议)

   (3)[参数1,参数2......]:外界传递给函数的值,可选。当有多个参数时,各参数用“,”隔开。

     ①形参

      a.定义时候,设置形参参数列表,在函数调用时,将相应的参数传递到函数内部进行加工给处理。

     ②默认值

      a.参数较多的情况下,参数值比较固定时,某个参数的值可能不变,可以设置默认值。 function fun($para1,$para2=3) { } //$para2为默认阐述

      b.调用时,没有为有默认值的参数传递参数,则自动使用默认值。设置了形参默认值,同样可以在调用时传递实参。

      c.有默认值的形参,该参数尽量靠后设置。

      d.默认值不可以是变量。

     ③实参

      a.调用时将数据传递给对应的形参。实参可以是具体的值,也可以为变量。要与形参的个数一致。       

    (4)函数体:函数定义的主体,专门用以实现特定的功能

3.1.2 函数的调用

  遵循先声明后调用原则。实际上,调用的位置可以在声明位置之前,不违背先声明后调用原则。PHP执行的第一阶段为预编译,将函数代码存放在内存的代码区,执行阶段,使用函数名字调用函数。

  语法:

     函数名([参数1,参数2...])

3.1.3 函数的返回值

  在调用一个函数后,能得到处理结果,这个结果就是函数返回值。在PHP函数中,使用return语句可以将返回值传递给调用者。

  return功能:

  ①将数据返回到调用的地方,调用函数的位置要接收,否则返回值无意义;

  ②结束函数的执行,return后面的语句不执行,最多可以执行一个return语句;

  ③return语句不能一次性返回多个值,但可以通过一个返回一个数组来是实现;

  ④尽量使用return语句返回信息,而不是直接输出;

3.2 函数的高级应用

3.2.1 函数中变量的作用域

  变量需要先定义才能使用,但并不意味着变量定义后就可以随时使用。变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。在函数中定义的变量称为局部变量,在函数外定义的变量称为全局变量。函数外部定义的变量,在函数内部无法使用;函数内部定义的变量,函数外部无法使用。

  示例:

<?php$name='欧阳华夏';//定义函数function getName(){echo $name;}//调用函数getName();//报错:Notice:Undefined variable:name in F:\Site\site2\index.php on line 10 在函数内部name的值为
?>

  从上述示例代码看出,程序提示变量$name未定义,$name的值也没有输出。说明在这种情况下,函数内部不能使用定义在函数外部的变量,

  如果希望在函数内部使用函数外面的变量,需要在函数内部使用关键字 global 修饰变量。如下:

<?php$name='欧阳华夏';//定义函数function getName(){global $name;echo $name;}//调用函数getName();//输出结果是欧阳华夏
?>

  由此可见,使用关键字 global 可以手动的将函数中使用的变量变为全局变量。

  局部作用域与全局作用域的关系:

  全局作用域与局部作用域没有交集,不同函数的作用域,也没有交集。

            

  超全局变量(预定义全局变量)$GLOBALS

  如何在局部作用域使用全局变量或者在全局作用域使用局部变量?

  $GLOBALS是一个包含了全部变量的全局组合数组,变量的名称就是数组的键。

  $GLOBALS专门用来实现数据的超全局化的超全局变量。作用是引用全局作用域中的全部全局变量。

  代码如下:

<?php$name='欧阳华夏';//定义函数function getName(){//使用$GLOBALS访问全局变量echo "在函数内部name的值为:" . $GLOBALS["name"];}//调用函数getName();//输出结果---->在函数内部name的值为:欧阳华夏
?>

  注意:

  ①创建一个全局变量,系统会自动在$GLOBALS中创建变量名为下表的元素;

  ②在$GLOBALS中添加元素,自动创建相应名字的全局变量;

  ③删除或修改$GLOBALS数组的元素,会导致全局变量同步删除或修改;

3.2.2 可变函数

  PHP支持可变函数的概念,即一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它。

  代码:

<?phpfunction test(){echo "可变函数的本真函数";}//定义变量,将上述函数赋值给该函数$var="test";$var();//结果是:可变函数的本真函数
?>

  注意:在变成过程中,尽量少用或者不用可变函数。

3.3 字符串相关函数

3.3.1 常见的字符串定义语法

  单引号:

  ①不解析变量

  ②单引号中包括单引号需要转义

  ③单引号中可以包括双引号

  双引号:

  ①可以解析变量

  ②变量最好使用变量{}边界符号

  ③单引号与双引号嵌套问题:只有最外层是双引号时,才能解析变量

  heredoc字符串定义结构

  单引号和双引号,在多行字符串、复杂字符串如JS代码的定义时显得不便

  语法:

$str = <<<heredoc标记名
字符串内容
heredoc标记名;

  注意事项:

  • 以<<<开头,其后跟着自定义的标识符。命名遵循PHP标识符命名规范;
  • 在换行的位置,开始字符串的书写;
  • 字符串书写完成后,换行输入原先自定义的标识符。标识符必须为本行第一列;
  • 两处的标识符必须一致;
  • 可以解析变量。单引号和双引号不需要转义或者处理。一般用于保存较长字符串或者JS代码;

3.3.2 字符串的长度问题

  单字节字符串的字节数(等于字符串)----------strlen();

<?php//strlen(字符串)$length=strlen("welcome to China");echo $length;//结果是:16
?>

  多字节字符串的字节数(一个汉字占三个字节)----------mb_strlen();

/*
PHP提供多字节字符串扩展模块php_mbstring.dll(动态链路库文件)。开启该扩展后,可以使用mb_strlen函数来统计多字节字符串的字符长度。
*/
mb_strlen(字符串)

3.3.3 字符串大小写转换

   string strtolower (string $string)  将$string中所有的字母字符转换为小写并返回;

   string strtoupper (string $string)  将$string中所有的字母字符转换为大写并返回;

   string ucfirst    (string $string)  将$string的首字符(如果首字符是字母)转换为大写字母并返回;

3.3.4 去除首尾空白字符

   string trim ( string $string)  将$string去除首尾空白字符并返回;

   string ltrim ( string $string) 将$string去除左边空白字符并返回;

   string rtrim ( string $string) 将$string去除右边空白字符并返回;

3.3.5 字符串重复与替换

   str_replace ( mixed $search , mixed $replace , mixed $subject )  该函数返回一个字符串或者数组,该字符串或者数组是将subject中所有的search替换为replace的结果;

   string str_repeat ( string $input , int $multiplier ) 返回input重复multiplier次后的结果;

3.3.6 字符串输出函数printf()

   printf ( string $format [, mixed $args [, mixed $... ]] ) 依据format格式参数产生输出;

  占位符:%d:十进制有符号整数    %s:字符串

  参数列表与占位符一一对应

  代码: 

<?php$name="欧阳华夏";$age=18;printf("我的名字是:%s,我今年%d岁了!",$name,$age);//输出结果:我的名字是:欧阳华夏,我今年18岁了!
?>

3.3.7 查找字符串中某些字符首次出现的位置

   strpos(目标字符串,要查找的子字符串); 查找子字符串在目标字符串中首次出现的位置,从左侧开始查找,下标从0开始;

   strrpos(目标字符串,要查找的子字符串); 从右侧开始查找,查找子字符串在目标字符串中首次出现的位置,下标从0开始;

3.3.8 截取子字符串函数

   substr(目标字符串,起始下标[,截取的长度]); 截取指定位置开始的子字符串,省略第三个参数,直接截取到末尾;

   strchr(目标字符串,截取的起始子字符串);  从左侧,自字符串出现的位置截取到末尾;

   strrchr(目标字符串,截取的起始子字符串); 从右侧,自字符串出现的位置截取到末尾;

3.3.9 字符串的分割

   explode(分隔符,目标字符串); 将目标字符串根据分隔符分割,返回子字符串组成的数组;

      str_split($str[,子字符串的长度=1]);  将字符串分成指定长度(默认为1字节)的子字字符串。返回数组;

3.3.10 数组转为字符串

   implode(连接的字符,数组);  将数组的元素使用连接字符串拼接成新的字符串;

3.4 日期和时间管理

3.4.1 UNIX时间戳

  PHP中提供了UNIX时间戳用以解决时间运算的问题。UNIX时间戳是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

3.4.2 常用的日期函数

  1、time()

  返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数,即时间戳。为10位整型数字。通常用于保存文章的发布时间、商品的发布时间等。

  2、date()

  时间戳为整型数字,无法之间使用,需要先使用的date函数格式化时间戳。

   string date ( string $format [, int $timestamp ] )

  返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选的,默认值为 time()。

  最常用的格式为:Y-m-d H:i:s    (2017-09-13 02:13:14),常用来生成文件名(’Ymd-His’)

  3、strtotime()

  将时间字符串转换为时间戳。

3.5 数学函数

  • max(),min()--分别返回一组数的最大值及最小值
  • abs()--返回绝对值
  • floor()--向下取整
  • ceil()--向上取整
  • round()--四舍五入
  • rand() 和 mt_rand()--返回随机数,可以取到两端的值。mt_rand生成的速度比rand快四倍多

转载于:https://www.cnblogs.com/WangYujie1994/p/10341344.html

PHP-----PHP程序设计基础教程----第三章函数相关推荐

  1. java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx

    java程序设计基础教程第六章图形用户界面编辑.docx 还剩 27页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要 ...

  2. 软考 程序员教程-第三章 数据库基础知识

    软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...

  3. 计算机与程序设计基础 vb,《VB程序设计基础》第4章 函数与过程

    <<VB程序设计基础>第4章 函数与过程>由会员分享,可在线阅读,更多相关<<VB程序设计基础>第4章 函数与过程(16页珍藏版)>请在人人文库网上搜索 ...

  4. c++面向对象程序设计基础教程————多态性和虚函数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 继承性反映的是类与类之间的层次关系,多态性则是考虑这种层次关系以及类自身特定成员函数之间的关系来解决行为的再抽象问题. ...

  5. html5基础的ppt,HTML5程序设计基础教程第1章HTML5概述.ppt

    1.2.1 设置网页背景和颜色 可以在 标签中通过background属性设置网页的背景图片,例如: 可以在标签中通过backcolor属性设置网页的背景图片,例如: 标签中的常用属性 浏览[例1-1 ...

  6. PHP-----PHP程序设计基础教程----第四章数组

    4.1 初识数组 4.1.1 什么是数组 数组是一个可以存储一组或者一系列数值的变量.在PHP中,数组中的元素分两部分,分别为键(Key)和值(Value).其中,"键"为元素的识 ...

  7. Python程序设计基础(第五章函数 练习记录)

    继续之前的练习 本章首先介绍了如何编写和调用void函数,展示了使用函数对程序进行模块化的好处,并讨论了自顶向下的设计方法.然后,介绍如何将参数传递给函数,讨论了常用的函数库.如生成随机数的函数.接下 ...

  8. 《程序设计基础》 第五章 函数 6-6 字符金字塔 (15 分)

    本题要求实现函数输出n行字符金字塔. 函数接口定义: void CharPyramid( int n, char ch); 其中n和ch是用户传入的参数,n为[1, 9]的正整数.要求函数按照如样例所 ...

  9. 《程序设计基础》 第五章 函数 6-10 空心的数字金字塔 (15 分)

    本题要求实现一个函数,输出n行空心的数字金字塔. 函数接口定义: void hollowPyramid( int n ); 其中n是用户传入的参数,为[1, 9]的正整数.要求函数按照如样例所示的格式 ...

最新文章

  1. 【Keras】Linux一个shell脚本安装python、keras、tensorflow、anaconda等~
  2. 云计算对中小企业的大冲击
  3. 历数2013年优秀的开源游戏引擎与开源游戏项目
  4. C#学员信息管理试题
  5. 人工智能过于发达可能将后患无穷
  6. Blazor Server 应用程序中进行 HTTP 请求
  7. 几个比58同城交换更好玩的交换玩法
  8. 一秒执行一次_《一秒钟》:一贯的粗旷式抓大放小,张艺谋的自命题作业总是要观众自己再做一遍...
  9. Nature | IL-27直接靶向脂肪细胞以促进产热而改善肥胖
  10. C#设计模式之22-模板方法模式
  11. JavaScript求两点之间相对于Y轴的顺时针旋转角度
  12. java imapi.jat的使用_springboot+mybatis+Maven+jsp+Quartz整合实战林业厅项目
  13. 医用计算机基础学习心得,计算机基础学习心得.doc
  14. python读取文件并存入mysql_1.python读取txt文件并插入到mysql数据库以及将py脚本文件打包成独立的exe程序...
  15. android 消息系统Handler、MessageQueue、Looper源代码学习
  16. 开源加速器Gemmini代码解析(一):脉动阵列
  17. Python 获取每月的工作日天数 (法定假+周末)天数
  18. [NIPS 2018] Delta Encoder: An Effective Sample Synthesis Method for Few Shot Object Recognition
  19. 计算机学院青年教师讲课,【教学动态】计算机科学与信息工程学院举办首届中青年教师讲课大赛...
  20. Delphi大师弗兰克·宝兰德(Frank Borland)回来了!

热门文章

  1. mybatis 源码系列(七) Java基础之数据库事务隔离级别
  2. 算法练习——母牛的故事
  3. AFPM100消防设备电源监控系统在东北大学浑南校区能源动力中心中的应用
  4. 在lasagne中自定义层,实现highway network layer
  5. 如何开发一个对账系统
  6. 使用Maya2018快速制作气球的简单漂浮动力学
  7. 什么软件测试网红,Ins网红的照妖镜?最近诞生的检测照片被P多少的软件令人害怕......
  8. 牛人 就是这样锤炼出来的,中兴资深工程师,嵌入式专家韦东山是这样炼成的!
  9. 目前遇到的这个错误的“The application *** hans stopped unexpectedly. Please try again.”的原因。
  10. 外设驱动库开发笔记50:HP203B气压传感器驱动