12、函数:

函数的功能:

  定义:在真实的项目开发过程中,有些代码会重复利用,我们可以把它提出来,做成公共的代码,供团队来使用,这个我们封装的代码段,就是函数(功能)。

  优点:

  1、提高代码的利用率。

  2、减少开发时间。

  3、减少代码冗余。

  4、可维护性提高。

  5、方便调试代码。

  函数的定义格式:

    function 函数名(参数1 = 值1,参数2 = 值2,参数3 = 值3,。。。。。。。。。)

    {

        函数体代码

        return 返回值

    }

类别:

  类库函数:

    is_null () ,is_array (),is_string ();

   自定义函数:

    (就是我们自己写的函数,根据项目开发过程当中,咱们根据需求自己编写出来的函数,可以供大家一起使用。)

  【function】:

    定义函数的关键字。

函数命名规范:

  与咱们的变量名几乎一样

  1、函数名不区分大小写。

  2、函数名字使用英文,遵循规范。

  3、数字可以夹在中间或者后面。

  4、下划线不属于特殊符号。

  5、不用特殊符号。

  6、命名的时候要有意义。

  7、遵循驼峰或者下划线。

  8、不能使用系统给咱们的函数名还有系统的关键字。

基本格式:

  1、函数都要以关键字function 开始。

  2、函数名后面要紧跟小括号

  3、小括号下面跟着大括号,大括号后面是函数体。

  4、函数调用需要函数名加上小括号;

没有参数,没有返回值。

有参数,没有返回值。

function show($name = '张三' ,$val = '程序员') //$name = '',$val = '';

{

  echo '我的名字是'.$name.'我的职业是'.$val.'<br />';

}

参数就是:name,val

  如果你写多个的话,用逗号隔开,可以写多个,没有上限。

  就相当于 张三 赋值给name。

有参数有返回值

重点:

  return:

    只是返回并没有输出。

    return后面代码不执行

return:

  1、return关键字只要碰到立马结束,后面代码统统不执行。

  2、如果你想有多个返回值的时候,用数组去弄。

  3、函数调用表达式的值就是函数的返回值。

默认参数:

  1、默认参数就是不传参的时候用的那个变量。

  2、如果你传了参数,就用传过来的值。

  3、如果形参带有默认参数,一般放到后面。

  4、如果没有默认参数,你必须给参数传值,不然会报错。(js不是)

注意事项:

  1、函数必须要function开始定义。

  2、function后面加空,加函数名,加空格,加小括号。  

   3、函数名和变量名字命名规则基本一样,唯一不一样的是,不区分大小写。

  4、函数名后面跟括号,括号里面跟参数(就是变量)。

  5、如果有默认参数,用等号,等号后面是你要跟的值。

  6、调用函数的时候里面传入的值(实参),就是把函数体外的变量的值拿到函数体内来使用。

  7、函数体外的变量和函数体内的变量通常不是一个变量。

  8、函数可以有返回值,也可以没有返回值,你如果想返回的话,你用return 关键字返回。

  9、函数的调用跟你定义的顺序没有半毛钱关系,但是变量不是。

  10、函数可以多次调用,没有事。

 <?php
function name() {
echo '这首歌真好听';}
name ();
echo '<br />';
function info($name = '李四',$val = '程序员') {
echo '我的名字是'.$name.'我的职业是'.$val.'<br />';}
info ();
function show($name = '张三',$val = '医生') {
echo '他的名字是'.$name.'他的职业是'.$val.'<br />';}
show ();
function info2($name = '王五',$val = '警察') {
echo '我的名字是'.$name.'职业是'.$val.'<br />';}
info2 ('赵六','教师');
?>

 <?php
function say ($name = '张三',$age = 11,$sex = '男') {
echo '性名:'.$name.'<br />';
echo '年龄:'.$age.'<br />';
echo '性别:'.$sex.'<br />';
return '这是我的简介。';
echo 111;}
echo say ('李四');
?>

超全局变量:

 <?php
function say () {
var_dump($GET);}
var_dump($GET);
say();
?>

静态变量:

 <?php
function sum () {
$num = 1;
$num++;
echo $num;}
sum ();
sum ();
sum ();
sum ();
echo '<br />';
function sum1 () {
static $num = 1;
$num++;
echo $num;}
sum1 ();
sum1 ();
sum1 ();
sum1 ();
?>

形参和返回值的类型的约束:

function sum (int $num1, int $num2) //形参的;

{

  return $num1+$num2;

}

sum(2,3);

//小括号后面加上:加上数值类型,把函数体返回的值给转成你限定的类型。

匿名函数:

所谓的匿名函数就是没有名字。

//如果你想用,赋值给一个变量,然后该怎么调用就怎么调用,变量加上(),跟普通函数调用一样。

$func = function () {}

$func();

 <?php
function sum1($num1,$num2){
return $num1+$num2;}
var_dump(sum(1,2));
echo '<br />';
function sum2($num1,$num2){
return $num1+$num2;}
var_dump(sum('1','2'));
echo '<br />';
function test(...$arr) {
var_dump($arr);}
test('abc',1,2,3,123,'cc');
echo '<br />'
function test1 ($a,$b,$c,$d) {
var_dump ($a,$b,$c,$d);}
$arr = [1,'wang',1.87,'big'];
test1(...$arr);
echo '<br />';
$func = function () {
echo '匿名函数';};
$func (); ?>

13、常用函数:

数学函数:

  1、随机:rand,mt_rand

  2、小数:floor:向上取整;

        ceil:向下取整;

        round:四舍五入法取整;

  3、其他:abs:绝对值;

        pi:圆周率;

        M_PI:常量,与pi()函数的返回值相同;

        pow:指数表达式;

        max:最大值;

        min:最小值;

字符串函数:

  1、大小写转换:

    strtolower:转换为小写;

    strtoupper:转换为大写;

    lcfirst:首字母小写;

    ucfirst:首字母大写;

    ucwords:每个单词首字母大写;

  2、空白处理:

    trim:去掉首尾的空白字符;

    ltrim:去掉开头的空白字符;

    rtrim/chop:去掉结尾的空白字符;

  3、查找定位:

    strstr/strchr:返回首次出现到结尾的内容;

    strrchr:返回最后一次出现到结尾的内容;

    stristr:strstr忽略大小写的版本;

    strpos:返回首次出现的位置;

    stripos:strpos忽略大小写版本;

    strrpos:返回最后一次出现的位置;

    strripos:strrpos忽略大小写版本;

    substr:子串提取,可以通过下标方式获取单个字符($str{n});

    strpbrk:返回(字符列表中任意字符)首次出现到结尾的内容;

  4、比较:

    strcmp:二进制比较字符串;

    strcasecmp:strcmp忽略大小写;

    strnatcmp:自然顺序比较;

    strnatcasecmp:strnatcmp的忽略大小写版本;

  5、顺序:

    str_shuffile:打乱顺序;

    strrev:逆序字符串;

  6、转换:

    chr:将ASCⅡ码值转换为字符;

    ord:返回字符串的ASCⅡ码值;

数组常用函数:

  1、数组中元素指针的移动:

    next:向后移动,指向下一个元素;

    prev:向前移动,指向前一个元素;

    end:指向最后一个元素;

    reset:复位,重新指向第一个元素;

  2、键和值相关的操作:

    key:获取数组当前元素的键;

    current/pos:获取数组当前元素的值;

    array_keys:获取所有的键;

      array_values:获取所有的值,并为其建立数字索引;

    array_key_exists/key_exists:判断给定的键是否在数组中;

    in_array:判断给定的值是否在数组中;

    array_search:根据值返回给定的键名;

    array_count_values:统计数组中所有的值出现的次数;

  3、添加删除元素:

    array_shift:将数组开头的元素移出数组;

    array_unshift:向数组开头添加一个或更多个元素;

    array_push:向数组末尾压入一个或多个元素;

    array_pop:弹出数组末尾的一个元素;

  4、排序相关:

    shuffile:将数组打乱(转换为索引数组);

    sort:对数组进行排序(排序之后重新索引);

    resort:对数组进行逆向排序;

    asort:对数组进行排序并保持索引关系;

    natsort:用自然顺序算法对数组进行排序;

    natcasesort:natsort忽略大小写的版本;

    ksort:对数组按照键名进行排序;

    krsort:对数组按照键名逆向排序;

    usort:使用用户自定义的比较函数对数组的值进行排序;

    uasort:使用用户自定义的的比较函数对数组的值进行排序并保持索引关系;

    uksort:使用用户自定义的比较函数对数组的键名进行排序;

  5、元素运算:

    array_sum:计算数组中的所有值的和;

    array_product:计算数组中所有值的乘积;

    count/sizeof:计算数组中元素的个数;

  6、创建数组:

    range:建立一个包含指定范围单元的数组(可以指定步幅,可以指定递减);

    compact:创建一个包含变量与其值的数组;

    extract:从数组中将变量导入到当前的符号表(与compact功能相反);

    array:新建一个数组;

    array_merge:合并一个或多个数组(关联会覆盖,索引会重新索引,若想保留索引可以使用'+')

    array_merge_recursive:递归合并一个或多个数组;

    array_combine:用一个数组的值作为键名,另一个数组的值作为值创建数组;

  7、其他:

    array_chunk:将数组分割成指定长度的小数组;

    array_map:将回调函数作用到每个元素上,返回处理的结果数组(新数组);

    array_walk:将回调函数作用到每个元素上(会改变原数组),返回真假;

    array_filter:使用回调函数过滤数组(回调函数返回真的才会出现在结果中);

    array_flip:返回交换键和值后的新数组;

    array_rand:随机从数组中抽取一个或多个元素的键;

    array_replace:使用后面的数组中元素替换第一个数组中的元素;

    array_reverce:返回一个单元顺序相反的数组(关联数组会保持键值对应,索引数组需要传递第二个参数);

    array_unique:移出数组中重复的值。

 

 <?php
$num = rand(1,6);
ehco $num;
echo '<br />';
$num1 = mt_rand(1,6);
echo '$num1';
echo '<br />';
$num2 = 5.4;
ehco floor($num2);
echo '<br />';
$num3 = 6.1;
echo ceil($num3);
echo '<br />';
$str = 'ABCdef';
echo strtolower($str);
echo '<br />';
$str1 = 'ABCdef';
echo strtoupper($str1);
echo '<br />';
$str2 = 'abcdefg';
echo substr($str2,2,4);
echo '<br />';
echo strpos($str2,'c');
?>

14、文件函数:

     

  

 <?php
function add(){
echo '这是数据库添加方法'}
function del() {
echo '这是删除方法';}
function update (){
echo '这是修改方法';}
function select() {
echo '这是查询方法';} ?>
 <?php
include(mysql/wenjianbaohan.php);
add();
?>

<?php
require('mysql/wenjianbaohan.php')
select ();
?>

require和include的区别:

require('......')这个函数一般放在php文件最前面,程序在执行前就会先导入要引用的文件;

include('......')这个函数一般放在程序的流程控制里面。只有程序在执行碰到才会引用。可以简化程序的执行流程。

require:一个文件存在错误时,执行就会中断,并返回一个致命错误。

include:一个文件存在错误时,程序不会中断执行,会弹出一个警告。

    

  

php的基础知识(三)的更多相关文章

  1. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  2. Python基础知识(三)

    Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...

  3. C# 基础知识 (三).主子对话框数值传递

    在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗 ...

  4. 快速掌握JavaScript面试基础知识(三)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  5. Dapper基础知识三

    在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. Dapper,当项目在开发的时候,在没有必要使用依赖注入的时候,如何做 ...

  6. Java的基础知识三

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  7. Go语言核心36讲(Go语言基础知识三)--学习笔记

    03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...

  8. 3. K线基础知识三

    1. 阴线 证券市场上指开盘价高于收盘价的K线,K线图上一般用淡蓝色标注,表示股价下跌,当收盘价低于开盘价,也就是股价走势呈下降趋势时,我们称这种形态的K线为阴线. 中间部分实体为蓝色,此时,上影线的 ...

  9. 税收基础知识 > 三税(营业税, 增值税, 所得税) + 关税

    三税:营业税 ▪ 增值税 ▪ 所得税 主要关注:一般纳税人, 起征点不详细描述. 营业税(Business tax) 营业税(Business tax),是对在中国境内提供应税劳务.转让无形资产或销售 ...

  10. python基础知识三

    在考虑它们的运算时,一定要想到python是一门面向对象语言,它对类型的要求是不那么严格的,因为在完全面向对象的语言中,一切都是对象. 那么让我们重新 考虑+ -  *  /等操作,不再拘泥于传统的数 ...

随机推荐

  1. [PE格式分析] 2.IMAGE_DOS_HEADER

    typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number 固定为"MZ" ...

  2. nlinfit非线性回归拟合

    % % 使用指定函数对下述两变量进行曲线拟合  % % y=a+k1*exp(m*t)+k2*exp(-m*t);  % % 离散点: t=[0,4,8,40],  % % y=[20.09,64.5 ...

  3. golang rest api example

    package main import ( "net/http" "github.com/gin-gonic/gin" "github.com/jin ...

  4. UIButton中的**EdgeInsets是做什么用的?

    UIButton中的**EdgeInsets是做什么用的? UIEdgeInsetsMake Creates an edge inset for a button or view.An inset i ...

  5. Hyper-V迁移---委派

    在Hyper-V管理器中-实时迁移,选择“使用kerberos",如图1所示 在AD中,找到Hyper-V宿主,分别设置委派,如图2所示    图1               图2

  6. The Tao to Excellent

    1:一次只做一件事情 我不具备同时做好多件事情的能力. 2:随身携带一本书 效率最高的学习时间是那些零碎的时间. 3:听身体的 休息的标准是:如果你觉得你是在休息,那你就是在休息了. 4:如果有一件事 ...

  7. Springmvc 进行数据类型转换

    SpringMVC进行一些常用的数据类型转换,这里以Date 数据类型的转换为例. SpringMVC表单中输入日期,一般都是以字符串的形式输入,如何将字符形式的日期转换为Date 类型的呢?这里只需 ...

  8. BZOJ2194:快速傅立叶之二(FFT)

    Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...

  9. 汇编试验四:[bx] 和 loop 的使用

    预备知识: 段前缀的使用: ffff:0~ffff:b 和 0020:0~0020:b 的数据: 一次循环的复制效果: 但是,这种方式DS的数据得修改: Source Code: assume cs: ...

  10. 最长公共子序列问题LCS

    最长公共子序列问题 在这里介绍一种在动态规划中类似于板子题的类型 : 最长公共子序列问题.(Link) 首先来看题面:给出1-n的两个排列P1和P2,求它们的最长公共子序列. 我们看到题之后的第一个想 ...