php基础

PHP
    PHP基本语法
        1、PHP标记:<?php 代码块 ?>
            理解:当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉 PHP 开始和停止解析二者之间的代码。
            扩展:PHP允许使用短标记:<? 代码块 ?>。需要将php.ini中的short_open_tag = Off更改为short_open_tag = On
            以前常用的一些PHP标记:
            <script languange="php"> echo'这是脚本风格的标记'; </script> 
            phpinfo():查看php中加载的模块
        2、PHP文件的访问方式:必须在浏览器中输入域名或IP,不然不解析
        3、页面显示乱码:
            header("content-type:text/html;charset=utf-8");
        4、PHP注释:
            单行注释: //
            多行注释: /*   */
            注意:多行注释没有嵌套
        5、可变变量
        6、变量的命名规则(可以包含字母、数字、下划线,只能以字母或下划线开头)
        7、PHP的连接符(.)
        8、拷贝传值、引用传值
    几个小函数
        echo
            输出
        var_dump
            print_r和var_dump都可以输出数组但是print_r中不显示数组元素的数据类型
            描述:打印变量的相关信息
            语法:void var_dump ( mixed $expression [, mixed $... ] )
            说明:此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
        print_r
            描述:打印关于变量的易于理解的信息。
            语法:bool print_r ( mixed $expression )
            说明:如果给出的是 string、integer或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object与数组类似。
        unset
            删除变量unset()
            描述:释放给定的变量、释放空间
            语法:void unset ( mixed $var [, mixed $... ] )
            返回:返回值为空  即不返回
        empty
            描述:检查一个变量是否为空
            语法:bool empty ( mixed $var )
            说明:如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、NULL、FALSE、array()、以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。"0"返回false
        isset
            描述:检测变量是否设置
            语法:bool isset ( mixed $var [, mixed $... ] )
            返回:如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。
    数组
        数组的概念
            变量是一个值的容器,数组是多个值的容器。
        数组的两种定义方式
            $arr=array(1,2,3,"abc",5)
                子主题 1
            $arr=array(’name‘=>"name1",‘age’=>15,....)
        数组的分类
            枚举数组:下标为从0开始的正整数,就是”枚举数组”。如:$arr = array(10,20,30)
            关联数组:下标为字符串的,就是”关联数组”。如:$arr = array(‘name’=>’张三’ , ‘sex’=> ‘男’);
            混合数组:下标既有字符串的,也有整型的,两种下标都有。$arr = array(10,20,’name’=>’Mary’)
            多维数组:数组元素还是数组。$arr = array(array(10,20))
        多维数组
            一个数组元素由两个部分构成:(1)下标(2)数组的值
            下标的类型,只能是整型和字符串型;
            数组元素的值,可以是任何类型(整型、浮点型、字符串型、布尔值、NULL、数组、对象、资源)。
            多维数组:就是数组元素的值,是一个数组。
        数组操作函数:
            1、count()
                描述:计算数组中的单元数目或对象中的属性个数
                语法:int count ( mixed $var [, int $mode = COUNT_NORMAL ] )
                参数:
                    $var,要统计的数组变量名称;
                    $mode可选,是否统计多维数组元素个数。1为统计多维,0只统计当前维数。
            2、unset()
                描述:释放给定的变量
                语法:void unset ( mixed $var [, mixed $... ] )
                说明:也可以删除一个数组元素,也可以删除整个数组。
        数组元素指针的理解
            每一个数组都有一个唯一数组指针;
            数组初始化,指针总是指向第一个元素。
            数组指针,总是指向一个数组元素;
            数组指针,也可以指向数组末端(非法区域)
            如果数组指针指向非法区域,则返回FALSE,foreach循环结束。
        数组指针的函数
            current():返回当前数组指针处元素的值,不移动指针;
            key():返回当前数组指针处元素的下标,不移动指针;
            next():返回下一个数组元素的值,并将指针下移一行;
            prev():返回上一个数组元素的值,并将指针回退一步;
            end():返回最后一个数组元素的值,并将指针移到数组最后一个元素。
            reset():返回第一个数组元素的值,并将指针移到第一个元素上。
        foreach
            语法一:foreach($arr as $value){…}
语法二:foreach ($arr as $key => $value)
提示:$key代表下标,$value代表元素的值
        数组操作函数
            1、each()
                描述:返回数组中当前的键/值对并将数组指针向前移动一步
语法:array each ( array &$array )
返回值:返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,单元 0 和 key 包含有数组单元的键名(下标),1 和 value 包含有数据。
提示:如果内部指针越过了数组的末端,则 each() 返回 FALSE。
            2、list()
                描述:把数组中的值赋给一些变量
                语法:array list ( mixed $varname [, mixed $... ] )
        遍历数组的三种方法
            foreach($arr as $key => $value)
            for(){key()current() next()}
            while(list($key,$value)=each($arr))
        数组排序
            sort()
                升序排,不保留索引关系
            rsort()
                降序排,不保留索引关系
             asort()
                升序排,保留索引关系
            arsort()
                降序排,保留索引关系
            ksort()
                数组按键名(下标)升序排列,保留索引关系
            krsort()
                数组按键名(下标)降序排列,保留索引关系
    PHP超全局变量数组
        以下8个变量,都是数组变量,又称为”预定义变量”。它们的名称是固定的,必须全大写,下划线开头。
        具体
            $_GET :通过地址栏传递到服务器的数据,必须是GET方式传递;
                发送GET数据的方法:往地址栏发送数据有几种方式
                    (1)通过<a>向地址栏传数据
                    (2)JS也可以向地址发送数据
            $_POST:通过表单 method = post 发送的数据,必须是POST方式传递。
            $_REQUEST:包含GET方式 和POST方式的全部数据。
                $_REQUEST可以同时获取GET和POST方式传递的数据。$_REQUEST速度比较慢,没有$_GET或$_POST速度快。平常不推荐使用。
            $_SERVER:显示或获取服务器相关的信息。
                获取服务器端的相关信息。每一次HTTP请求,$_SERVER数组中已经有了相关信息了。
            $GLOBALS:全局中的全局,换话句:包含大部分的超全局数组信息。
            $_SESSION:处理服务器的端的会话数据。
            $_COOKIE:处理客户端的会话数据。
            $_FILES:上传文件需要用到的数组。
    PHP常量
        1、概念
            常量是值永远不变的量。如:身份证号码、DNA、圆周率等。
            常量不能修改。
            常量不能删除。
        2、命名规则
            常量的命名规则与变量一样,但不能加”$”符号;
            常量名只能以字母、下划线开头,不能以数字开头;
            常量尽量全大写,与变量区分开来;如:DB_HOST、TITLE、CONTENT
            常量是区分大小写的;
        3、常量定义define()
            语法:bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
            描述:定义一个常量
            参数:
                $name常量名称;
                $value常量的值;
                $ case_insensitive,是否大小写敏感,false(区分大小写),true不区分大小写
        4、常量判断defined()
            描述:检查某个名称的常量是否存在
            语法:bool defined ( string $name )
            提示:常量名称必须是一个字符串。
        5、PHP预定义常量
            子主题 6
                PHP的系统常量,大约有800多个,可以通过get_defined_constants()函数来获取。
                    描述:返回所有常量的关联数组,键是常量名,值是常量值
                    语法:array get_defined_constants ([ bool $categorize = false ] )
                    参数:bool $categorize参数,是否显示二维数组,是否常量要分组。
            PHP_VERSION:PHP版本号
PHP_OS:PHP操作系统
PHP_INT_MAX:PHP支持的最大整数
TRUE:既是常量,也是关键字;
FALSE:既是常量,也是关键字。
        PHP魔术常量
            魔术常量:在程序运行过程中,值可以改变的常量。
                __LINE__:获取当前行号;
                __FILE__:获取当前文件的绝对路径;
                __DIR__:获取当前文件的目录;
                __FUNCTION__:获取当前函数名;
                __CLASS__:获取当前类名;
                __METHOD__:获取当方法名
            提示:get_defined_constants()中没有魔术常量。
    PHP数据类型
        标量(基本)数据类型:字符串型、整型、浮点型、布尔型;复合数据类型:数组、对象;特殊数据类型:资源、NULL
        1、判断数据类型
            var_dump():打印变量的类型和值;
is_bool():判断变量是否是布尔型;
is_int():判断变量是否是整型;
is_float():判断变是否是浮点型;
is_numeric():判断变量是不是数值型;
is_array():判断变量是否是数组;
is_string():判断变量是否是字符串;
is_null():判断变量是否为NULL
is_resource():判断变量否是资源型
        2、整型
            整型包括:正整数、负整数、零。
            (1)整型的表示方法
                    十进制表示:$a = 90;
    八进制表示:$a = 077;  //以0开头就是八进制
    十六进制表示:$a = 0x89FA;   //以0x开头就是16进制
            (2)最大整数(PHP_INT_MAX)
                PHP中整数的范围:-2^31(-2147483648) ~ 2^31-1(2147483647)
如果一个整数超出范围,则转成浮点数。
        3、浮点型:就是小数
            浮点数的范围:1.8E-308 ~ 1.8E+308  E是以10为底。  1.8E5:是一种科学计数方式。1.8*10^5 = 180000
        4、字符串型
            (1)字符串定义的三种方式
                用单引号,引起来的一串字符,就是字符串。
                用双引号,引起来的一串字符,也是字符串。如:$a = “abc”
                长字符串的表示:heredoc标识符
                    将一个长字符串,放在”<<<heredoc”和”heredoc;”之间;
“heredoc”这个名称可以自定义;
必须以”<<<heredoc”开头,必须以”heredoc;”结尾
“heredoc;”必须单独一行、必须顶头排。
长字符串中,可以放置HTML、CSS、JS、PHP的变量,但不能进行运算。
Heredoc的功能与双引号的功能一样,都可以解析PHP变量。
            (2)注意事项
                单引号内,输出的是变量的名称,不能解析变量;
双引号内,输出的是变量的值,可以解析变量;
在双引号内,如果一个变量后跟一个非空字符,会当成一个变量来处理,其实并没有这个变量。
        5、布尔型
            布尔型只有两个值true、false。
布尔型主要用在条件判断当中。
哪些值转成布尔型认为是FALSE
0、””、”0”、false、NULL、array()、空对象,转成布尔型都认为是FALSE。
        6、空型:没有类型
            如果一个变量不存在,则认为空型,空型只有一个值NULL。
            哪些情况认为空?
                不存在的变量;
                Unset()某一个变量
        7、资源型
            PHP的功能很少,它需要加载第三方的插件来实现其它功能。那么,第三方插件,对于PHP来说,就是它的资源。如:MySQL、GD2、FileSystem等。
资源就是到第三方数据的一个引用,也称为”引用传值”。
    PHP数据类型转换
        强制转换
            (int) $a ,强制转成整型;
(string)$a ,强制转成字符串;
(object)$a ,强制转成对象;
(bool) $a ,强制转成布尔值;
(float) $a ,强制转成浮点型
(array)$a ,强制转成数组型
        自动转换
            其它类型转成布尔型
            其它类型转成数值型
            其它类型转字符串
    计算机进制
        1、进制介绍
计算机底层的数据运算和存储都是二进制数据。
计算机语言就是二进制,计算机能直接识别二进制数据,其它数据都不能直接识别。
计算机的数据转换,基本都是操作系统自动转换的。
        2、常用进制
    十进制:有10个基本数字,分别为0、1、2、3、4、5、6、7、8、9,运算规则”逢十进一”;
    八进制:有8个基本数字,分别为0、1、2、3、4、5、6、7,运算规则”逢八进一”
    十六进制:有16个基本数字,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则”逢十六进一”。
二进制:有2个基本数字,分别为0、1,运算规则”逢二进一”。 一个8进制数,可以用3个二进制数,来表示。如:(567)8 = (101 110 111)2
一个16进制数,可以用4位二进制数,来表示。如:(A23)16 = (1010 0010 0011)2
        进制转换
            10进制转成2进制
                原理:除2取余法。第一次将整数除以2,取余数;然后,再将商除以2,再取余数;一直除下去,直到商为0,就除完了。最后读数时,从最后一位读起。
            10进制转成8进制
                原理:除8取余法。第一次将整数除以8,取余数;然后,再将商除以8,再取余数;一直除下去,直接商为0,就除完了。最后读数时,从最后一位读起。
            10进制转成16进制
                原理:除16取余法。第一次将整数除以16,取余数;然后,再将商除以16,再取余数;一直除下去,直接商为0,就除完了。最后读数时,从最后一位读起。
            2进制转成10进制
                原理:按权相加法。2进制每一位上的数,乘以所在的位权(指数常数),然后将各个乘积求和。
函数bindec()将二进制转成十进制。
            8进制转成10进制
                原理:按权相加法。8进制每一位上的数,乘以所在的位权(指数常数),然后将各个乘积求和。
函数octdec()将八进制转成十进制。
            16进制转成10进制
                原理:按权相加法。16进制每一位上的数,乘以所在的位权(指数常数),然后将各个乘积求和。
函数hexdec()将十六进制转成十进制。
    函数
        基本介绍
            1、概述
            2、函数定义格式
            3、函数调用
            4、函数参数
            5、默认参数
                PHP支持默认参数传递。
如果实参个数少于形参时,将用默认参数来代替实参。
提示:默认参数只能放在非默认参数的右边。
提示:默认参数的值,几乎所有类型都可以,但不能是函数调用、资源、对象。
        PHP常用函数
            判断变量的数据类型函数
                is_string() 判断一个变量是不是字符串型;
                is_bool() 判断一个变量是不是布尔型;
                is_float() 判断一个变量是不是浮点型;
                is_int() 判断一个变量是不是整型,不能判断字符串的整型;
                is_numeric() 判断一个变量是不是数值型;
                is_scalar() 判断一个变量是不是标量数据类型(整型、浮点型、字符型、布尔型);
                is_array() 判断一个变量是不是数组型;
                is_null() 判断一个变量是不是NULL型;
                is_resource() 判断一个变量是不是资源型;
                is_object() 判断一个变量是不是对象型。
            数组和字符串转换函数
                1、implode()
                    描述:将一个一维数组的值转化为字符串(数组转字符串)
语法:string implode ( string $glue , array $pieces )
参数:
$glue, 数组各元素之间的连接符号,默认为空字符串;
$pieces, 要连接的数组
                2、explode()
                    描述:使用一个字符串分割另一个字符串(将字符串转成数组)
语法:array explode ( string $delimiter , string $string )
参数:
$delimiter, 是分割的字符串;
$string, 是要分割的原始字符串;
返回:是一个数组。
            日期时间函数
                1、time()
                    描述:返回当前的 Unix 时间戳
                    语法:int time ( void )
                    返回:返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
                2、date()
                    描述:格式化一个本地时间/日期
                    语法:string date ( string $format [, int $timestamp ] )
                    参数:$timestamp, 提供的时间戳  $format, 格式化的字符串;代表要传递的时间戳。默认为当前时间戳。
 
                3、strtotime()
 
                        描述:将任何英文文本的日期时间描述解析为 Unix 时间戳
                        语法:int strtotime ( string $time )
                4、microtime()
                    描述:返回当前 Unix 时间戳和微秒数
                    语法:mixed microtime ( void )
                    返回:本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
            数学相关函数
                1、abs()
                2、ceil()
描述:进一法取整
                3、floor()
描述:舍去法取整
                4、round()
描述:对浮点数进行四舍五入
                5、rand()
                6、mt_rand()
                    描述:生成更好的随机数
                    语法:int mt_rand ( void )  或 int mt_rand ( int $min , int $max )
                    提示:如果省略参数,则随机数的范围是0 ~ PHP_INT_MAX。
                    注意:mt_rand()产生随机数值的平均速度比 rand() 快四倍。
            数组与键名和键值相关的两个函数
                1、array_keys()
描述:返回数组中所有的键名
                2、array_values()
描述:返回数组中所有的值
            字符串函数
                1、strlen()
                    描述:获取字符串长度
语法:int strlen ( string $string )
                2、substr()
                    描述:返回字符串的子串
                    语法:string substr ( string $string , int $start [, int $length ] )
                    参数:$string是原始字符串
$start如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 "abcdef" 中,在位置 0 的字符是 "a",位置 2 的字符串是 "c" 等等。如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。如果 string 的长度小于或等于 start,将返回 FALSE。
$length返回多少个字符
                3、strtoupper()
                    描述:将字符串转化为大写
语法:string strtoupper ( string $string )
                4、strtolower()
                    描述:将字符串转化为小写
                    语法:string strtolower ( string $str )
                5、ucfirst()
                    描述:ucfirst — 将字符串的首字母转换为大写
                    语法:string ucfirst ( string $str )
                6、trim()(r ,l除去左边 右边的)
 
                    描述:除字符串首尾处的空白字符(或者其他字符)
                    语法:string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )
                    参数:此函数返回字符串 str 去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:
                7、strrev()
                    描述:反转字符串
                    语法:string strrev ( string $string )
                8、strpos()
 
                    描述:查找字符串首次出现的位置,从左往右查找。
                    语法:mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
                    参数:
                        $haystack, 原始字符串
                        $needle, 目标字符串
                        $offset, 索引偏移量
                9、strrpos()
                    描述:计算指定字符串在目标字符串中最后一次出现的位置,从右往左查找。
                    语法:int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
                10、strchr()和strstr()是一样的
                    描述:查找字符串的首次出现
                    语法:string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
                    参数:
                        $needle如果 needle 不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。
                        $haystack输入字符串。
                        $before_needle若为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。
                        返回:返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。
                11、str_replace()
 
                    描述:子字符串替换
                    语法:mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
                    参数:
                        $search查找的目标值,也就是 needle。一个数组可以指定多个目标。
                        $replace , search 的替换值。一个数组可以被用来指定多重替换。
                        $subject执行替换的数组或者字符串。也就是 haystack。
                        $count如果被指定,它的值将被设置为替换发生的次数。
                        如果 search 和 replace 都是数组,它们的值将会被依次处理
                12、str_repeat()
                    描述:重复一个字符串
语法:string str_repeat ( string $input , int $multiplier )
参数:
$input要重复的字符串
$multiplier重复的次数
    改变脚本运行的几个函数
        终止脚本运行  die()和exit()
            描述:输出一个消息并且退出当前脚本。
            语法:void exit ([ string $status ] )
            参数:$status可选,是一个中断脚本执行前的提示信息。
            提示:常用在检查程序错误时。
        延缓脚本执行:sleep(n)
            描述:相当于JS中的延时器setTimeout()
描述:延缓执行
语法:int sleep ( int $seconds )
参数:$seconds是延缓的秒数
        PHP服务器端包含
            用法:include “1.php”  或  include(“1.php”)
            描述:include、require都是语法结构,不是真正的函数,因此后面的括号可带可不带。
            1、Include和require的区别
                include:将另一个文件的代码包到当前文件中执行,若包含文件不存在,报一个警告错误(E_WARNING),脚本会继续向下执行。
                require:将另一个文件的代码包到当前文件中执行。若包含文件不存在,报一个致命错误(E_ERROR),脚本会终止执行。
                提示:两个都是包含文件,但在处理错误时方式不一样。
            2、include_once和include区别
 
                include_once:将另一个文件的代码包到当前文件中执行。对包含的文件会进行判断,如果该文件曾经被包含过,则该文件就不会再包含了。
                require_once:将另一个文件的代码包到当前文件中执行。对包含的文件会进行判断,如果该文件曾经被包含过,则该文件就不会再包含了。
                提示:在一个脚本文件中,不能定义两个同名的函数(函数重载)。
                使用include_once可以避免函数重载。
            包含文件中的return语句
                包含文件中的return语句,可以向include返回一个值。然后,再把该值存储一个变量
    三个中断
        break
            结束整次循环
            break [n] :n决定跳出第几次循环
        continue
            结束当次循环
        return
    两个判断&三个循环
        if
        while
        dowhile
        for
        switch
    运算符
        算术运算符
            +、-、*、/、%、++、--
算术运算符的运算结果,一定是数值型。
类型转换:如果两边的操作数不是数值型,要先转成数值型,再进行算术运算。
        字符串运算符
            . 和 .=
        比较运算符:>、<、>=、<=、==、!=、===、!==
        逻辑运算符:&&、||、!
        错误控制运算符(@)
            “@”主要用来屏蔽表达式的系统错误的。
可以用来屏蔽常量、变量、函数调用、include语句。
        运算符优先级
posted @ 2017-09-01 22:50  tatasix  阅读(164)  评论(0编辑  收藏  举报