• php 入门笔记


    一、web服务器原理

    浏览器:不算开发技术,但是是开发者工具,能帮助我们到服务器去找脚本并进行解析

    了解浏览器的差异

    开发时需要安装多个浏览器测试兼容效果

    大致可分为两大类: IE 和 其他

    可以先按照火狐、谷歌等开发,再去修改,兼容IE

    将前端代码放服务器上 web是客户端的服务

    web服务器(想将静态网页发布出去就需要web服务器)是一款软件,有apache、Nginx、Tomcat、IIS等
    (其实自己也可以尝试写一个web服务器,需要懂http协议等)

    动态网站就是人机交互,想搜索就能出现页面,就需要服务器去处理,在服务器上和web服务器装在一起的就要有在服务器端工作的脚本语言,

    服务器端对服务器的处理,操作系统的结构、服务器的目录结构、数据库中的数据结构,文件数据,用户通过访问web服务器,web服务器结合服务器的编程语言
    什么都能做到。

    服务器端编程语言 php,jsp,asp等中的一种

    数据库管理系统 MySQl、Oracle、SQL Server 等中的一种

    基于数据库的网站才是动态网站 得会一到几种数据库管理软件

    了解工作中的业务和工作流程以及一些算法。

    web工作原理:(BS结构)

    服务器上要有操作系统

    操作系统中要安装一个web服务器,web服务器会开一个端口(一般是80端口)

    http://www.baidu.com 配置网络时一定要配置DNS,可将输入的域名翻译为地址

    url组成:

    1、协议:http 传输协议 (不写的话,浏览器会自动添加上)协议有一些缺省的东西,不写会自动补全

    2、主机:ip 或 域名 (如www.baidu.com)

    3、端口:80(web服务器默认端口)通过端口区分访问的是哪个软件,普通端口是1024-65535之间的整数

    常用协议端口是0-1024之间的整数

    apache服务器:通过它可以访问 文档根目录 root ,

    4、内容:php/index.php

    5、参数:?page=10


    通过在浏览器输入url(访问html的url),向web服务器发送请求,服务器返回相应的html文件给浏览器,浏览器对文件进行解析渲染

    web服务器没有解析语言的功能,但是浏览器只能解析html文件,所以需要在web服务器中扩展语言解析器

    如需要解析php,就要装php解析器。php在服务器端解析,所以是服务器脚本语言,html在浏览器即客户端解析

    所以是客户端脚本语言

    服务器端还要安装数据库


    语言本身没有大量存储的功能,所以需要在服务器端安装数据库

    数据库:MySQL Oracle SQL server

    php可以作为访问数据库的客户端连接数据库 数据库和web服务器不一定要安装在一台服务器上

    二、几种主流的web应用程序平台

    开发准备:操作系统 web服务器 数据库 脚本语言

    微软系列: window IIS SQL server Asp(C#) Asp.net

    Linux Apache(发布网站的) MySQL php 简称LAMP(最合适)


    Unix tomcat Oracle Jsp JavaEE平台组合

    (性能好,针对特定机器写的,不会死机,很稳定,不跨平台不跨机器)

    三、LAMP 网站开发组合

    可以尝试去学习一下Linux操作系统


    PHP 的学习


    一、php的运行环境

    Linux下的安装三种方式

    源码包安装
    rpm包安装
    集成软件安装
    xampp

    集成软件安装 xampp (只建议学习使用,因为apache,mySql版本不能直接单独选择)

    Windows 安装的两种方式

    单个下载安装

    集成环境安装

    php版本,5.3.1、、、

    集成软件有 appserv、phpstydy 、wampserver(推荐使用的)

    二、安装php的运行环境

    环境结构

    启动、停止、重启

    各个软件的“家目录”

    各个软件的配置文件

    其他一些结构


    三、php基础

    1、php功能介绍

    PHP 超级文本预处理器

    -服务器端脚本语言运行 (主要的方向 开发动态网站)
    -命令行脚本运行
    -客户端图形界面(GUI)程序

    phpinfo();打印所有php的环境信息以及模块信息,不光可测试环境是否安装失败

    Loaded Configuration File 配置文件的位置


    PHP在web开发中的应用(既可以做网站也可以做应用软件)

    1)php是一种在服务器端执行的嵌入HTML文档的脚本语言
    2)php是目前最流行的网站开发语言(B/S结构)
    3)php独特的语法混合了C、Java、Perl 以及php 自创新的语法

    支持几乎所有流行的数据以及操作系统

    php特点:

    1)是开方源代码的,服务器端的脚本语言
    2)独立于操作系统,可以运行在几乎所有系统中
    3)支持大部分的服务器
    4)支持大量数据库
    5)可以创建图象
    6)还有一些其他功能在后面的高级技术详细介绍

    php的发展

    互联网相关企业几乎都在用php语言进行网站开发

    四、第一个php程序,PHP语言标记及指令分隔符“分号”

    php的开发步骤:

    1)使用编辑器创建一个包含源代码的磁盘文件
    2)将文件上传到web服务器上
    3)通过浏览器访问web服务器运行程序


    php的基本语法:


    四种可以让php解析的标签

    <?php

    echo "我们交个朋友<br>";
    ?>

    <?

    echo "不行<br>"; (这种可能会跟xml发生冲突)
    ?>

    <%
    echo "hello<br>";

    %>

    <script language="php">嗨<br></script>


    五、PHP程序注释及空白的使用

    指令分割符 分号""

    //功能执行语句,后面必须加分号
    echo "aaaaaaaaaaaaaa";
    //结构定义语句,后面一定不要加分号
    if(true){
    }
    while(){
    }
    class demo{}
    function demo(){
    }

    PHP需要在每个指令后用分号结束。和其他语言不一样的是,在php中括号(?>)
    前的分号不是必选的

    程序注释*******

    //......单行注释
    /*.......*/多行注释 (注意不能嵌套)
    #..... 脚本注释
    /**.....*/文档注释 (也不能嵌套)

    程序员在编辑时使用注释是一种良好的习惯,优点:

    写过不合适的代码注释
    写帮助文档
    调试程序

    注意:注释要写在代码的上面或是右边


    程序中使用空白的处理


    六、php变量在计算机内存中的存储


    1、变量的声明 (想用数据先放到变量里面)

    变量是用于临时存储值的容器。这些值可以是数字、文本、或者复杂得多的排列组合。是用于跟踪几乎所有类型信息的简单工具
    php是一种非常弱的类型语言,php变量的类型不是由程序员设定的,确切的说,是根据该变量使用的上下文在运行时决定的。php不要求在使用
    变量之前声明变量,当第一次给一个变量赋值时,你才创建了这个变量

    内存划分:栈内存 变量名 地址

    2、变量的声明及变量的命名

    1)变量名予以 $开始
    2)变量的名称声明时一定要有意义
    3)不合法的变量名:不能以数字开头,不能有运算符号(关键字是可以作为php的变量名称使用)
    4)变量名区分大小写(驼峰式命名方式)

    3、工具函数

    var_dump(); 打印一个变量的内容和类型

    isset($a); 判断一个变量是否存在,返回的值为布尔类型的值

    unset($a); 清除变量a

    empty($b); 判断b的值是否为空


    4、可变变量

    $hello = "world";
    $$hello = "name";
    $$$hello = "age";
    $$$$hello = "sex";
    echo $hello;
    echo "<br>";
    echo $world;
    echo "<br>";
    echo $name;
    echo "<br>";
    echo $age;

    有时候使用可变变量名是很方便的。就是说,一个可变变量获取了一个普通变量的值作为这个可变变量
    变量名

    5、变量的引用

    引用操作符 & 可以在关联赋值中使用,就像一个别名,使得变量都指向了内存的相同地址

    $a = 10;
    $b = 20;
    $c = &$a; (就像给变量取了个别名)
    $a=100;
    echo $a;
    echo "<br>";
    echo $c;
    $c=500;
    echo "<br>";
    echo $a;
    echo "<br>";
    echo $c;

    1)只有变量才有地址,只有变量才能有引用
    2)一个变量发生变化,另一个变量的值也会变化
    3)在使用unset()这个函数时,如果有引用关系,只是解除了这种
    引用关系,只删除一个名字,另一个还在。
    4)如果两个变量是应用关系,一个变,另一个也变;但如果给其中一个引用
    不是普通的值,而是一个新的引用,则改变引用关系。

    6、php变量类型的介绍

    php是弱类型语言,类型是由值决定的

    PHP支持八种原始类型——var_dump()
    --四种标量类型:

    布尔类型(boolean)
    整型(integer)
    浮点型(float)(浮点数,也作double)
    字符串(String)
    --两种复合类型:
    数组(Array)
    对象(Object)
    --最后是两种特殊类型:
    资源(Resource)
    NULL

    一个变量赋值为空,就是清除了这个变量

    echo "以下是四种变量类型<br>";
    $var = true;
    var_dump($var);
    echo "<br>";
    $var = 10;
    var_dump($var);
    echo "<br>";
    $var = 10.12;
    var_dump($var);
    echo "<br>";
    $var = "hello world";
    var_dump($var);
    echo "<br>";
    echo "以下是两种复合类型<br>";
    $var = array("one","two","three");
    var_dump($var); //array
    echo "<br>";
    echo "<br>";
    class Demo{
    var $one = 10;
    var $two = 20;
    var $three = 30;
    }
    $var = new Demo;
    var_dump($var); //object
    echo "<br>";


    echo "以下输出两种特殊的类型<br>";

    $var = mysqli_connect("localhost",'root',"");
    var_dump($var);
    echo "<br>";
    $var = null;
    var_dump($var);
    echo "<br>";

    1)php布尔类型(boolean)

    boolean为假值的情况:boolean的false
    int 0
    float 0.0 0.00
    string ""
    string "0"
    array 空数组为假
    其他情况均为真值


    2)整型和浮点型

    整型值可以用十进制、十六进制、八进制符号指定,前面可以加上可选的符号(-或者+)代表数值的正负

    整数值有最大的使用范围,这与平台有关,对于32位系统而言范围:

    负的2的31次方到正的2的31次方,31位存储位,一位符号位
    -2147483648~2147483648,PHP不支持
    无符号整数。如果超出了则变成float型。

    ord()这个函数可以输出ASSI码值 eg、 echo ord("h");

    整数声明方法: $a = 10; 十进制
    $b = 077; 八进制
    $c = 0xff; 十六进制

    mkdir("/user/hello",0755);


    3)浮点数(也叫双精度数或实数)

    是包含小数部分的数,通常用来表示整数无法表示的数据,如金钱值、距离值、速度值等

    浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有14位十进制数字的精度

    可以用以下任何十进制数字的精度,到一定长度会以科学计数法显示

    浮点数是一个近似数,不要用等号去判断两个浮点数是否相等

    4)字符串的声明及定义

    (1) 一个字符 ,和多个字符都是字符串
    (2)字符串的声明需要用 单引号 或 双引号引起来
    (3)字符串是没有长度限制的 "" " " "无限长"
    (4) 在单引号中可以使用双引号,在双引号中可以使用单引号
    (5) 在单引号中不能再使用单引号,在双引号中不能再使用双引号
    (6) 在单引号和双引号中可以使用转义字符 \,可以将没有意义的字符变得有意义,
    也可以将有意义的字符变得没意义


    5)PHP变量的其他数据类型

    $arr = array(1,2,3,4,5);
    $arr2=array(
    "foo"=>"bar",12=>true
    );
    class Person{
    var $name;
    var $age;
    var $sex;
    function say(){
    }
    function eat(){
    }
    $person = new Person();
    }
    $file = fopen('text.txt',"r");
    echo fread($file);
    fclose($file);

    6)伪类型
    并不是php语言中的基本数据类型,只是因为php是弱类型语言,所以在一些函数中一个参数可以
    接收多种类型的数据,还可以接收别的函数作为回调函数使用,为了确保代码的易读性介绍一些伪类型的使用
    mixed :说明一个参数可以接受多种不同的类型
    number:说明一个参数可以是integer 或者 float
    callback:接受一个用户自定义函数作为参数


    7、 php的数据类型之间的转换和检测

    getType() 获取变量类型

    1)强制转换

    (1)setType(变量,类型); 将什么变量设置为什么类型 ----是将原变量给转换了
    (2)在变量使用时,前面加上类型符号 ----- 是在赋值时给新变量一个新类型,原变量类型不变
    $int = "100000";
    $d = (int)$int;
    echo getType($d);

    (3)intval(),floatval(),strval() 也是将新变量转换了,原变量不变


    8、 常量的声明和使用

    一旦声明,这个常量的值不会被改变

    初始化静态段 ----里面存的数据不灵活

    1)常量是使用函数 define()声明的
    define("ROOT",10);
    2)如果常量没有声明,则常量名在使用时,会自动转为字符串(效率很低)
    error_reporting(E_ALL& ~E_NOTICE);
    $root = "localhost";

    echo ROOT;

    输出字符串“ROOT”
    3)常量名称不要加 $符号

    4)常量名称默认区分大小写 习惯上常量的名称要全部大写

    5)可以使用define()第三个参数决定是否让这个常量名称区分大小写 true false

    变量都区分大小写,常量可以自定义区分大小写,其他php语法都不区分大小写

    6)常量的值只支持标量数据类型

    7)常量不能使用 unset()释放

    8) 可以使用defined()判断 一个常量是否存在

    if(defined("ROOT")){
    echo ROOT+10;
    }else{
    echo "1111111";
    }


    可以用函数constant()来读取常量的值
    用get_defined_constants()可以获得所有已定义的常量列表

    9)常量有魔术常量和系统常量

    魔术常量 值不像PI 一样,它的值在环境发生变化时会改变,如_LINE_文件中的当前行号

    几个php的魔术常量

    _LINE 文件中的当前行号
    _FILE 文件的完整路径和文件名
    _DIR 文件所在的目录
    _FUNCTION 函数名称
    _CLASS 类的名称
    _NAMESPACE 当前命名空间的名称

    9、PHP的运算符

    运算元 运算符 运算元
    1 + 1

    一元运算符 +1 -1 ++ -- ==

    二元运算符 + - * / % > < = == ===

    三元运算符 1?2:3

    $a = 10

    算术运算符号 + - * / % ++ --

    赋值运算符号 = += -= *= /= %=

    比较运算符 > < == >= <= ===?= ?==

    逻辑运算符 && || !

    位运算符号 & | ~ >> <<

    其他运算符号 ?: @ =>

    1)算数运算符号

    除数不能为零

    在其它语言中(不是在PHP中),+号除了有 加法的作用, 还有连接字符串的功能

    $a = 10;
    $b = 5;
    echo $a/$b;
    echo "<br>";
    echo 1+1+"4+5+6"+1+1; //会将字符串自动转换为相应的数据类型,所以会转为4
    echo "<br>";
    echo 1+1+"4e+5+6"+1+1; //会将字符串自动转换为相应的数据类型,所以会转为4乘以10的5次方

    % 余数的结果,正负号取决于前面的数,跟后面无关

    1)让一个数不超过一个值(计算范围)
    2)求什么被整除
    if($num%4 == 0){}

    13.45%2.23456 其实对小数求模没有意义,php中会割舍为整数然后求模

    ++ 自增
    $a = 5;

    $a++ 先用再加

    ++$a 先加再用


    2) 赋值运算符

    = += -= *= /= %= .=(将变量与所赋的值相连后的结果赋给该变量)

    “.” 可以直接连变量或者字符串,但是不能直接连整数等

    单引号不解析变量,双引号可以解析变量

    echo "这个变量的值:".$a."<br>";
    echo "<br>";
    echo "这个变量的值:$a<br>";

    3)比较运算符

    (1)比较后的结果是一个 boolean值,用在if和while等语句中

    4>3 true

    == 比较的是内容
    ====全等,不仅内容要相等,而且两边类型要相等
    4)逻辑运算符

    就是将比较运算符连接在一起

    && || !

    逻辑运算符的特性:

    特性: 短路

    $a =1;

    && and $a > 5 && $a < 100 明明两边都要执行,前边如果不成立后面也就不去执行了

    || or
    $a = 8;

    $a > 5 || $a < 100

    boolean 型不参与++运算

    赋值运算符优先级最低

    $a=0;
    $b=0;

    if($a = 3 && $b = 3){

    $a++;
    $b++;
    }
    echo $a.",".$b; //1,4

    $a=0;
    $b=0;

    if($a = 3 || $b = 3){

    $a++;
    $b++;
    }
    echo $a.",".$b; //1,1

    5)php中的位运算符


    & 按位与 | 按位或 ^ 按位异或 ~ 按位非 << 左移 >> 右移

    6)其他运算符

    运算元 ? 运算元 :运算元

    条件 ? 语句 :语句

    条件 ? 表达式 : 表达式

    一 ? 二 : 三

    如果"一"的条件成立,则执行 "二",否则执行 "三"

    7)php运算符的优先级和表达式

    10、 PHP流程控制

    顺序结构
    分支结构
    {
    1、单一条件分支结构 (if)
    2、双向条件分支结构 (if 加上 else从句)
    3、多向条件分支结构 (if else if子句,switch语句)

    在多路分支(if else if)中,只能进入一个 ******

    switch-case语句语法

    1、switch()括号中,必须是一个变量
    2、在switch(){}中放的是多个case 语句,case空格,后面放的是值,
    值的后面使用一个 冒号:

    switch (变量){
    case 值1:
    语句;
    语句;
    语句;
    语句;
    语句;
    break;
    case 值2:
    语句;
    语句;
    语句;
    语句;
    语句;
    [break;] (可选)
    case 值3:
    语句;
    语句;
    语句;
    语句;
    语句;
    break;
    default:语句;
    break;

    }

    switch case 需要注意的一些细节:

    1、如果在case中语句过多,就需要将多个语句做成一个函数之类
    2、switch(变量) 变量的类型 只能允许两种类型: 整型和字符串
    3、break 是退出switch结构使用的,如果需要同时匹配多个值时,可以使用多个case而不加break;

    else if 判断范围时使用
    switch case 使用于单个值匹配进行分支

    4、巢状条件分支结构

    指的是在语句中可以再嵌套几层

    }


    循环结构


    while语句

    do...while 循环

    for 语句

    goto 语句

    特殊的流程控制语句


    循环必须有退出循环的条件,

    while 循环不是做计数用的,适合条件循环

    for 循环 计数用

    do-while 程序会先执行 do语句体中的语句,然后再检查表达式的值,如果符合条件表达式,就再
    进行 do 语句体中的语句,直到条件不符合为止

    while(条件表达式){
    循环体
    }

    //第一步先执行 表达式, 表达式为true时, 才执行循环体

    do{
    循环体
    }while(条件表达式);

    //第一步 先执行循环体,再判断条件表达式,成立则执行下一个循环体


    循环结构for语句 (适合用计数做循环)


    for( 表达式一;表达式二 ; 表达式三 ){

    echo "循环体<br>";
    }

    第一部分,先执行表达式一,
    第二部分,再执行表达式二,
    第三部分,再执行 循环体,
    第四部分,再执行 表达式三
    第五部分,再执行表达式二

    注意,表达式一,只被执行一次
    表达式一:初始化条件 $i = 0;
    表达式二:条件表达式,成立则执行循环体
    表达式三:是一个自增条件 $i++,

    三部分都能提出来,但是for()中的两个分号不能省略


    九九乘法表四种打印方法

    for($i=1;$i<=9;$i++){
    for($j = 1 ;$j<=$i;$j++){
    echo "$j X $i = ".($i*$j)."&nbsp;&nbsp;";
    }
    echo "<br>";
    }
    echo "<br>";
    for($i=1;$i<=9;$i++){
    for($j = $i ;$j>=1;$j--){
    echo "$j X $i = ".($i*$j)."&nbsp;&nbsp;";
    }
    echo "<br>";
    }
    echo "<br>";

    for($i=9;$i>=1;$i--){
    for($j = 1 ;$j<=$i;$j++){
    echo "$j X $i = ".($i*$j)."&nbsp;&nbsp;";
    }
    echo "<br>";
    }
    echo "<br>";
    for($i=9;$i>=1;$i--){
    for($j = $i ;$j>=1;$j--){
    echo "$j X $i = ".($i*$j)."&nbsp;&nbsp;";
    }
    echo "<br>";
    }


    11、特殊流程控制语句

    1)break (break后面加数字可以退出多层循环)
    跳出循环 break是一个指令,break1是退出一层循环,break2 是退出两层循环 break3是退出三层循环


    2)continue

    中断本次循环,继续下一次循环

    3)exit

    当前的脚本中只要执行到exit语句,而不管它在哪个结构中都会直接退出当前脚本。exit是一个函数
    ,可以带参数输出一条消息,并退出当前脚本。它的别名是die()

    while($i < 100){
    if($i %3 == 0){

    continue;
    echo "{$i}aaaaaaaaaaaaaaaaaaaaaaaaa<br>}";
    }
    $i++;
    }

    这是一个死循环

    12、流程控制语句goto

    跳转
    echo "11111111111<br>";
    goto nh; (跳转到标记处)
    echo "2222222222222<br>";
    echo "333333333333333<br>";
    nh: (标记)
    echo "44444444444444444<br>";

    循环

    $x = false;
    $i=0;
    xx:

    echo "{$i}11111<br>";

    if($i >5)
    goto nz;

    $i++;

    goto xx;

    goto的得与失

    goto 语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。

    13、PHP函数

    函数:是一段完成指定任务的已命名代码块。函数可以遵照给它的一组值或参数完成特定的任务,并且可能返回
    一个值。在PHP中有两种函数:自定义函数与系统函数。

    函数的优越性:

    控制程序设计的复杂性
    提高软件的可靠性
    提高软件的开发效率
    提高软件的可维护性
    提高程序的重用性

    让表格隔行换色代码
    echo '<table border="1" width="800" align="center">';
    echo '<caption><h1>表格</h1></caption>';
    for($i = 0;$i<10;$i++){
    $bg = ($i%2==0)?'#cccccc':"";
    echo '<tr bgcolor="'.$bg.'">';
    for($j=0;$j<10;$j++){
    echo '<td>'.$i.'</td>';
    }
    echo "</tr>";
    }
    echo '</table>';


    函数的定义和应用、函数的语法格式

    自定义函数的返回值

    输出错误

    error_reporting(0);
    error_reporting(E_All);

    file_put_contents("demo.html",table("成绩表",50,5,3,'green',10,400,'right')); 新建demo.html文件,将调用的函数生成的html放入
    demo.html文件中

    函数遇到return ,函数return下面的代码都不会执行了

    return除了可以终止函数,还可以返回值

    1)函数名定义时必须要有意义,建议驼峰式命名
    2)重复的函数名不能声明 ,不能跟自定义的函数重名,也不可以和系统函数重名

    自定义函数语法格式:

    function 函数名称 (参数1,参数2,参数3){

    程序内容叙述(函数体);
    return 返回值 //如需函数有返回值时使用
    }
    函数的使用:

    函数名称([参数1,参数2,参数3。。。。])
    了解一个函数: 1)了解函数功能
    2)了解参数
    3)了解返回值

    function_exists()判断函数是否存在


    3)PHP局部变量

    PHP变量的范围


    function demo(){
    $age = 30;
    echo "你吃饭了没<br>";
    }
    echo demo();

    函数调用了才执行
    函数内部声明的变量,只有调用时才执行,调用结束后,函数中声明的变量会被释放
    函数内部声明的变量,只能在函数内部调用,这就是——————局部变量

    函数的参数,就是一个局部变量,声明成形参的,可以在调用时,给值,传值

    4)PHP全局变量

    全局变量:在函数外部声明的变量,可以在每个函数中使用。(顺序)

    在函数中局部变量会覆盖全局变量的能见度,因此在函数中无法直接调用使用全局变量

    函数中若要使用全局变量时,必须要利用global 关键字定义目标变量,以告诉函数主体

    此变量为全局。

    在函数内部如果需要使用函数外部的变量,需要使用global关键字,将外部变量引入

    只要将全局变量声明在调用之前,在调函数时就能找到

    在外面声明的变量也好常量也好,如果没有unset()释放,都是脚本结束的时候释放。

    而函数内部的局部变量,在函数调用结束时就会释放

    九个全局数组:$_POST['a']=100; $_GET['b']=300;

    全局数组中的变量,默认都是全局的,不需要用global去引入了


    5)PHP静态变量


    内存: 栈内存、初始化静态段

    局部变量、全局变量声明后在栈内存中

    static $c 这样的变量存在初始化静态段中

    静态变量:

    1、在函数中声明的静态变量只在第一次调用时声明
    2、第二次以后,一看是静态变量,就先到静态区中,看一下有没有这个变量,如果有就使用,
    而不去再声明

    3、静态变量,在同一个函数多次调用中共享

    静态变量一般都是在函数内部声明

    6)
    function demo(){
    static $a=0;
    $a++;
    echo $a."<br>";
    }
    function test(){
    static $a=0;
    $a++;

    }
    demo();
    demo();
    test();
    test();
    test();
    test();
    demo();
    demo();

    输出结果为 1、2、3、4、5

    7)PHP常规参数的函数

    函数三要素: 1、函数的功能描述
    2、函数的参数
    3、函数的返回值

    常规参数的函数格式说明:所谓常规参数的函数,就是实参和形参应该个数相等、类型一致

    伪类型参数
    number add(number $a ,number $b)

    mixed funName(mixed $a)

    8)引用参数的函数

    引用变量的特点:$a = 10; $b = &$a; $a = 400; $b = 800;
    1、只有在内存中的变量才有地址。
    2、有引用关系的两个变量,一个变,另一个就变,相当于两个是一个

    如果在函数说明中,有&出现,说明这个参数是一个引用参数,在调用时传参数时,就必须传一个变量

    注意:如果在函数的形参中使用"&"修饰参数,在调用该函数时必须传入一个变量给
    这个参数,而不是传递一个值。

    9)PHP默认参数的函数

    function demo($name = "shf",$age = "two",$sex = 'three',$email = "four"){
    echo "{$name}=={$age}==={$sex}===={$email}";
    }
    demo("妹子");


    默认参数([]中的)的函数格式说明:
    在php中,支持函数的默认方式调用。如果在调用函数时没有指定参数的值,在函数中会
    使用参数的默认值。

    注意:默认参数必须列在所有没有默认值参数的后面


    10)PHP可变个数参数的函数

    func_get_args();//返回一个数组,包含所有参数
    func_num_args() //返回参数总数
    func_get_arg() //接收一个数字参数,返回指定参数

    function demo(){
    $arr=func_get_args();
    $sum = 0;
    for($i=0;$i<count($arr);$i++){
    $sum +=$arr[$i];
    }
    return $sum;

    }

    echo demo(1,2,3,4,5,6,7,8,9);


    下面代码效果同上


    function demo(){
    $arr=func_get_args();
    $sum = 0;
    for($i=0;$i<func_num_args();$i++){
    $sum +=func_get_arg($i);
    }
    return $sum;

    }

    echo demo(1,2,3,4,5,6,7,8,9);

    11)变量函数

    如果将一个函数名称(字符串)给一个变量(字符串),然后在这个变量后面加上括号
    ,就会调用这个变量值对应的函数

    function add($a,$b){
    return $a+$b;
    }
    $var = "add";
    echo $var."<br>";
    echo $var(10,20);

    12)回调函数

    在使用一个函数的时候,如果传一个变量不能解决多大的问题。就需要传一个过程进入
    到函数中,改变函数的执行行为。

    在函数的调用时,在参数中传的部署一个变量或一个值,而是一个函数。这就是回调函数
    参数。

    $arr = array("aaa","a","aaaaaa","sdfghjkl","xcvbnm","xc","kjhgfdsa");
    function mycom($a,$b){

    if(strlen($a)>strlen($b)){
    return -1;
    }else if(strlen($a)<strlen($b)){
    return 1;
    }else{
    return 0;
    }
    }
    print_r($arr);
    usort($arr,"mycom");
    echo "<br>";
    print_r($arr);

    function fun($one="1",$two="2",$three="3"){
    echo "$one===========$two==========$three<br>";
    }
    fun();

    参数个数如果是变长的时,就不能直接调用这个函数

    要借助于 call_user_func_array("fun",array(111));
    if(count($_GET==1)){}

    fun()

  • 相关阅读:
    break和continue
    while循环嵌套
    while循环语句
    SDUT 2766-小明传奇2(母函数)
    那些奇妙的&quot;大师&quot;是怎样炼成的(科学、迷信、心理)
    深入理解Linux字符设备驱动
    [从头学数学] 第162节 锐角三角函数
    iOS将数组中的内容分拼接成字符串
    win10 UWP 全屏
    杂(三)-The type java.lang.Object cannot be resolved It is indirectly referenced ...
  • 原文地址:https://www.cnblogs.com/WEI-web/p/7209248.html
Copyright © 2020-2023  润新知