PHP基础语法(一)

来源:互联网 发布:java mission control 编辑:程序博客网 时间:2024/05/18 01:49

    • 前瞻知识点
    • hello world
    • PHP简介
    • 语言基础
    • 输出时间
    • 变量
      • 特点
      • 变量命名规则
      • 变量的声明与赋值
      • 变量值的读取
      • 变量相关函数
      • 可变变量
      • 变量的值传递和引用传递
    • 常量
      • 概念
      • 命名规则
      • 常量定义define
      • 魔术常量
    • 数据类型
      • 整型
      • 浮点型
      • 字符串
      • 布尔型
      • 空型
    • 数据类型转换
    • 运算符
    • 流程控制
    • 数组
      • 概念
      • PHP中数组的分类
      • 数组的创建
      • 多维数组
      • 数组中的函数
      • 数组的遍历
      • PHP中的数组传值时为值传递
    • 函数
      • 概念
      • 定义函数的方式
      • 函数的调用
      • 函数参数的传递
      • 函数可变数量参数
      • 函数的返回值
    • 常用系统函数
      • 字符串
      • 数学
        • 日期

前瞻知识点

  • B/S结构的处理流程
  • 网络基本概念
    • IP
    • 域名
    • DNS
    • 网络DNS
    • 本地DNS
    • 端口
  • 安装WAMP环境
    • W – web, A – Apache , M – MySql ,P – PHP

hello world

  • 所有PHP代码都放在标记:

PHP简介

  • PHP Hypertext Preprocessor 超文本预处理器,是嵌入到HTML文件中的服务器端的脚本语言;
  • 一个PHP文件中,可以包含多种代码:HTML、CSS、JS、Jquery、PHP、MySQL等
  • PHP的语法,与C、Java、Python、JS语法比较相似;
  • PHP是服务器端的脚本语言,脚本语言相对编程语言来说,要简单的多。
  • PHP程序只能运行在服务器端,在客户端看不见PHP任何代码;
  • PHP文件的扩展名是以.php为后缀的。

语言基础

  • PHP与ASP、JSP一样,都是嵌入到HTML文件中的服务器端的脚本语言;
  • PHP文件的后缀是.php
  • PHP代码的标记:

输出时间

echo date('Y-m-d H:i:s');
  • 默认情况下PHP输出的时间是格林威治时间,比中国时区晚8个小时

  • 解决方案:

    • 1.0 找到PHP的配置文件 php.ini

    • 2.0 定位到 date.timezone

    • 3.0 设置中国时区

      ; PRC为中华人民共和国  date.timezone = PRC

变量

特点

  • 变量是临时存储数据的容器;
  • 变量是存储在内存当中;
  • 网页执行完毕后,网页中相关的变量全部消失。

变量命名规则

  • 变量名称只能包含:字母、数字、下划线
  • PHP中的变量名必须以 “$” 符号开头,但是”$”符号不属于变量的一部分,将来不管是赋值还是取值,都必须加上”$
  • 变量名区分大小写
  • PHP中的变量使用不需要声明,直接赋值使用
  • 常用的两种命名方法:
    • 驼峰命名法
    • 第一个单词的首字母小写,其余单词的首字母全部大写
    • 如:userName,userId
    • 帕斯卡命名法:
    • 与驼峰命名法很像
    • 唯一区别是它的首字母是大写
    • 如:UserName,UserId
    • 下划线命名法
    • 所以的单词首字都小写,由下划线连接
    • 如:user_name,user_id

变量的声明与赋值

  • 声明
    • PHP中变量不需要声明,但是每个变量必须以$开
  • 赋值:
    • 直接给带有$的变量赋值
    • 使用“=”,赋值运算符给变量赋值,“=”读作赋值运算符
    • 赋值运算符的左边只能是一个变量名
    • 如:$userName = “张三”;

变量值的读取

  • 变量的数据类型由其中的内容决定

  • 直接以 “$+变量名”的方式 取得可以取得变量的值

    $userName = "admin";
  • 可以使用“.”来连接将变量与字符串一起输出

    echo "我的名字叫".$userName
  • 也可以在字符串的内部直接使用变量

    • 在PHP中“.”点表示相连
    • 在PHP中“+”加表示相加(是一种算术运算符)
    echo "我的名字叫做$userName"但是,如果用引号时,变量后面还有其它的有文字,就不能解析了如echo "我的名字叫做$userName很高兴见到大家"这里就无法解析,需要在变量后面添加一个非空特殊字符,如:echo "我的名字叫做{$userNmae}很高兴见到大家"如果输出字符是单引号,则无法解析字符串

变量相关函数

  • header():设置服务器返回到浏览器的数据的类型

    header('content-type:text/html;charset=utf-8');
  • isset() 判断变量是否存在

    • 可以用来判断变量是否定义,或者是否为null
  • empty() 判断变量是否为空

    • 如果 var 是非空或非零的值,则 empty() 返回 FALSE
    • “”0“0”NULLFALSEarray()var $var; 以及没有任何属性的对象都将被认为是空的,也就意味着,如果上述的数据用empty来判断返回的结果都为true
  • unset() 删除变量

    • 可以通过这个函数删除一个已经存在的变量,删除之后变量为null

    • 可以同步删除多个变量

    • 如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。(这个当我们学了全局变量与局部变量以后再说)

    unset($a,$b,$c)
  • var_dump() 显示变量的类型和值

    • 可以同时打印多个变量
  • print_r() 显示数组的元素信息

    • 如果是字符串,数字,boolean值,会原样输出
    • 如果是数组,会详细打印数组信息

可变变量

  • 指一个变量的名称,由另一个变量的值来充当

    $a = "b";$b = "c";echo $b;//输出  cecho $$a;//输出 c
  • 如果使用可变变量,一定要加上给可变变量的变量名加上{}作为定界符

变量的值传递和引用传递

  • JS中的基本数据类型(只有一个值):字符串型、数值型、布尔型、undefined、null

  • JS中的复合数据类型(多个值):数组(Array)、对象(Object)、函数(Function)

  • 值传递:

    • 传递的是变量中保存的值
  • 引用传递

    • 传递的是变量保存的引用地址
  • 在PHP中可以使用 & 符号将值传递的变量改变为引用传递:如

    $a = "abc";$b = &$a;$a = "123";echo "$a<br/>$b"

常量

概念

  • 常量就是值永远不变的量,即:一旦赋值无法删除,修改。
  • 由于变量在使用时还需要去它存储的地址中去找到对应的数据,相比变量来说,常量的速度要快。

命名规则

  • 与变量基本一致
    • 变量名称只能包含:字母、数字、下划线,常量也是
    • PHP中的常量不需要使用$符号开头
    • 常量名区分大小写,一般建议使用时尽量用大写,为了与变量区分开
    • 常用的两种命名方法:
    • 驼峰命名法
      • 第一个单词的首字母小写,其余单词的首字母全部大写
      • 如:uerName,userId
    • 下划线命名法
      • 所以的单词首字都小写,由下划线连接
      • 如:user_name,user_id

常量定义define()

  • 语法: bool define ( string name,mixedvalue [, bool $case_insensitive = false ] )

  • 案子:通过define关键来定义

    define('TITLE',"中华人民共和国");//定义常量TITLEdefine('TITLE',"中华人民共和国",true);//加上true,使用时既可以使用TITLE,又可以使用小写title,来使用常量define('TITLE',"中华人民共和国",false);//加上false,使用时必须使用TITLE

判断是否是常量:defined()

  • 语法: bool defined ( string $name )

  • defined()可以判断常量

    defined(“TITLE”);//通过defined判断常量时,常量一定要加上引号

魔术常量

  • 量的值在程序运行过程中不会改变。但是,魔术常量的值,会随着所在位置的不同而改变。
  • 魔术常量都由系统定义好的,我们直接使用就好了,常用的有:
    • __LINE__:得到当前代码的行号
    • __FILE__:得到当前文件的路径
    • __DIR__:得到当前文件所在目录
    • __FUNCTION__:得到所在函数

数据类型

  • 数据类型分类

    js中的数据类型:简单数据类型:    Number,string,bool,undefined  复杂数据类型    数组,对象,null
    • 基本数据类型:字符串型(string)、整型(int)、浮点型(float:小数)、布尔型(bool)
    • 复合数据类型:数组、对象
    • 特殊数据类型:资源、NULL
  • 数据类型判断

    • is_bool(),判断变量是不是布尔型

    • is_int(),判断变量是不是整型

    • is_string() 判断变量是不是字符串型

    • is_float() 判断变量是不是浮点型

    • is_numeric() 判断变量不是数值型或数字字符串。

    • is_array() 判断变量是不是数组

    • is_null() 判断变量是否为NULL

    • is_resource() 判断变量是不是资源型

    //判断用户是否大于18岁,如果大于18岁,显示网页内容,如果没有,则不显示$age = 20;if(isset($age) && is_numeric($age)) {    if($age >18) {      echo('显示网页');    } else {      echo ('不显示');    }}

整型

  • 关键字:int

  • 在js中所有的数字都用number来表示,但是在PHP,数字有不同的划分,其中整数(正整数,0,负整数)用整型来表示

    • 整型包含正整数、负整数、零0

    • 可以用10进制、八进制、16进制表示

    echo 100;//十进制echo 011;//八进制,以0开头的整数,结果为9echo 0x9a;//十六进制,以0x开头,结果为154
    • PHP中最大整数:PHP_INT_MAX,(2^31)-1
  • 如果数字超出来了整数据范围,则类型会变为float

浮点型

  • 关键字:float

  • PHP中除了整数还有浮点型,一般浮点数会包含小数,比整型更加精确

  • 浮点型的范围:1.8E-308~1.8E+308

  • 注意点:

    • 如果要对浮点数进行操作,就好先将浮点数转为整数再处理
    //以下做法不可取if(2.1/0.7 == 3) {  echo '相等';} else {  echo '不相等';}//以下是正确做法$a = 2.1 * 10;$b = 0.7 * 10;if($a/$b == 3) {  echo '相等';} else {  echo '不相等';}

字符串

  • 字符串定义的四种方式

    • 用单引号可以定义一个字符串;如:$a = ‘abc’;

    • 单引号内无法解析变量

    • 转义符号有:\’

    • 用双引号来定义一个字符串;如:$a = “abc”;

    • 双引号内可以解析变量

    • 转义符号有:\\、\’、\”、$、\r、\n、\t

    • 定义长字符串:heredoc

    <?phpheader('content-type:text/html;charset=utf-8');$a = 'abc';$aa = <<<heredoc<html>123$a</html>heredoc;echo $aa;?>
    • 使用注意:

      • 1)字符串放在两个heredoc标签之间
      • 2)以“<<

布尔型

  • 关键字:bool

  • 概念

    • true表示真,flase表示假
  • 转换:
    • 0,”“,NULL,0.0,”0”,arry() 空数组会转为false
    • 其它的数据都会转为true

空型

  • 用null表示,表示没有
  • 以下情况会出现NULL
    • 可以直接给一个变量,赋一个NULL值;
    • 未定义的变量的值,也是NULL;
    • unset()删除一个变量后,该变量的值为NULL。

数据类型转换

  • 概念

    • 数据有不同的类型,有时间操作数据时需要转换类型以后才能完成操作,比如计算
    • 类型的转换分为两种:自动转换(隐式转换)、手动转换(强制转换)
    • 大部分情况下数据是自动转换,少数情况下强制转换。
  • 强制转换

    • 通过关键字进行转换
    (bool)$a   //强制转换为bool    //除了0,0.0,”“,”0“,NULL,array(),转为false,其余都为true(int)$a        //强制转换为int    //转换会将小数去尾(string)$a //强制转换为string    //null也可以转为‘’;(array)$a  //强制转换为array(object)$a //强制转换为object
  • 进制转换

    • 进制就进位制,X进制,就是逢X进一。同理:十进制就是逢十进一,二进制逢二进一等等。
    • 8进制:有8个基本数,分别为0、1、2、3、4、5、6、7,运算规则”逢8进1”;
    • 16进制:有16个基本数,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则”逢16进1”。
    • 2进制:有2个基本数,分别是0、1,运算规则”逢2进1”。
    • 转换方法:
    • decbin()将十进制转换为2进制
    • bindec()将2进制转换为十进制
    • decoct()将十进制转换为8进制
    • octdec()将八进制转换为10进制
    • dechex()将十进制转换为16进制
    • hexdec()将16进制转换为十进制

运算符

  • 算数运算符+、-、*、/、%、++、–

  • 赋值运算符=、+=、-=、*=、/=、%=

  • 字符串运算符. 和 .=

    • 案例:隔行变色
    <?phpheader('content-type:text/html;charset=utf-8');$str = "<table width='500' border='1' align='center'>";$str .= "<tr bgColor='#f0f0f'>";    $str .= "    <th>编号</th>";    $str .= "    <th>新闻编号</th>";    $str .= "    <th>发布时间</th>";    $str .= "</tr>";for($i = 0 ; $i < 10 ; $i ++) {    if($i % 2 == 0) {        $str .= "<tr bgColor='#f0f0f'>";    } else {        $str .= "<tr>";    }    $str .= "<td>$i</td>";    $str .= "<td>&nbsp;</td>";    $str .= "<td>&nbsp;</td>";    $str .= "</tr>";}$str .= "</table>";echo $str;?>
  • 比较运算符>、<、>=、<=、\=\=、!=、\=\=\=、!==

    • 案例:字符串比较

    • ASCII码表:如果两个字符进行比较,比较的本质是它们对应的ASCII码

    echo ("a" > 120);
  • 逻辑运算符&&、||、!

    • 实例:闰年判断
    //条件://1)能够被4整除,且不能被100整除//2)能被400整除$year = 2000;if ($year%4 == 0 && $year % 100 !=0 || $year % 400 ==0) {    echo "{$year}是闰年";} else {    echo "{$year}不是闰年";}
  • 运算符优先级

  • 三元运算符

    • 案例:比较两个数的大小
    $a = 123;$b = 456;$max = $a > $b ? $a : $b;
  • 错误控制运算符(@)

    • 作用:主要用来屏蔽表达式的错误:

    • 可以用在变量、常量、函数调用之前,但是不能用在函数定义、类定义之前。

    $a = 100;$b = 0;echo @($a / $b);

流程控制

  • 顺序结构

    • 赋值语句
    $a = 123;
  • 分支结构

    • 分支结构(if)
    • 多条件判断(if else if else)
    • 案例:根据分数给评语。
    • 多分支结构(switch)
    • 案例:完成今天星期几
  • 循环结构

    • while
    • do while
    • for
    • break和continue
    • 案例:
    • 1)得到1~100的所有整数相加之和
    • 2)输出100~1000以内所有水仙花数
    • 3)输出九九乘法表

数组

概念

  • 数组是一组数的集合。如:$arr = array(1,2,3,4,5,6);

PHP中数组的分类

  • 枚举数组
    • 数组元素的下标(索引),是从0开始的正整数,如:$arr = array(1,2,3,4,5,6);
  • 关联数组:
    • 数组元素的下标,是一个字符串。如:$arr[‘edu’] = ‘大专’
    • 关联数组无法通过数字下标取得对应的元素
  • 混合数组:
    • 两种下标都有的数组,就是混合数组。如:$arr = array(100, ‘edu’=>’大专’ , ‘tel’ => ‘130110’)
  • 多维数组:
    • 数组元素的值,是一个数组,还可以理解为:数组嵌套数组。如:$arr[5][2] = 100

数组的创建

  • 使用 array() 函数来创建数组

    • 创建枚举数组:

    • 下标是从0 开始的正整数

    • $arr = array($value1,$value2,$value3,....);
  • 创建关联数组

    • $key是重新给数组元素指定一个下标

    • 下标和元素的值之间连接号是”=>”,又称”重载元素下标”

    $arr = array([$key=>]$value,[$key=>]$value,[$key=>]$value,....)
  • 创建混合数组

    • 有字符串下标的元素,就没有整型下标

    • 如果$key省略了,就用默认下标

    • 下标只能是整型以及字符串

    • 如果元素没有指定下标,会在最大整数下标的基础上加1.

    $arr[] = $value
    • 如果$arr数组不存在的话,会先创建数组,并添加第1个数组元素,第1个元素的下标为0
    • 如果$arr已经存在 的话,添加新的数组元素,新的数组元素的下标,是最大整数下标+1

    • 创建混合数组:

    • 由语法1,2混合创建数组

      $arr[] = 12;$arr[] = 13;$arr["a"] =14;$arr[] = 15;$arr[20] = 16;$arr[] = 19;

多维数组

  • 多维数组,即数组中的元素又是一个数组

    $arr = array(array(1,2,3,4),array(10,20,30,40),array('a','b','c'),"abc");

数组中的函数

  • count()
    • 计算数组中的单元数目或对象中的属性个数
    • 语法:int count ( mixed $var [,\$mode = COUNT_NORMAL ] )
    • 参数:
    • $var 是对象或者数组
    • $model: 如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count()识别不了无限递归
  • unset()
    • 删除变量或数组元素
    • 语法:void unset ( mixed var[,mixed… ] )
    • 删除元素后,仅仅只是相当于将数据从数组中移除掉了,对数组的下标没有影响

数组的遍历

  • 使用for加next()遍历数组
for($i = 0; $i < count($arr); $i++) {    echo key($arr).current($arr)."<br/>"    next($arr);}
  • key():当前指针处元素的键名(下标),不会移动指针
  • current():返回当前指针处元素的值,不会移动指针
  • next(): 返回下一个元素的值,指针移动到下一个元素的开头

PHP中的数组传值时为值传递

$arr = array(1,2,3,4);$arr1 = $arr;$arr1[0] = 100;echo $arr[0];//1

函数

概念

  • 函数是一段命名的代码段
  • 封装一代码,将来要执行时可以直接调用

定义函数的方式

/*    function 定义函数的关键字    functionName 函数的名称    arguments 形参列表    retValue 返回值    fnCode 功能代码*/function functionName(arguments){    // fnCode    return retValue;}
  • function: 定义函数的关键字,不区分大小写
  • functionName:函数名称,命名规则与变量一样,只是不需要加$符号
  • 小括号():主要用来接受传递过来的参数
  • arguments:定义函数时的参数,形参
  • return 函数的返回值。

函数的调用:

  • 实参:调用函数时,传递的参数就是实参,含有真正数据的
  • 形参:定义函数时的参数

  • 案例:得到数组中所有数组的和

函数参数的传递:

  • 值传递
    • 函数参数的值传递,就是将参数的值,复制一份,传到函数中
    • 值传递速度比较慢,但修改其中一个不会影响到另一个;
  • 引用传递
    • 引用传递速度比较快,但修改其中一个,另一个也会改变。
    • 引用传递,是将一个变量的地址,复制一份,传到函数中
  • 默认参数
    • 函数中有些参数可能是固定不变的,为了操作方便,可以用默认参数来代替
    • 默认参数必须放在非默认参数的右边
    • 默认参数的值,只能是:字符串、整型、浮点型、布尔型、NULL、数组
function showSelf($name,$age=19,$gender="男") {    echo "我叫{$name},今天{$age},性别{$ender}";}

函数可变数量参数

  • func_get_args( void ):返回一个参数列表的枚举数组,参数数组的下标是从0开始的整数

  • func_get_arg( $index ):返回参数数组中,指定下标的参数的值;

  • func_num_args( void ):返回实参的个数。

    function getSum() {    $arr = func_get_args();    $len = func_num_args();    $sum = 0;    print_r($arr);    echo "<br/>";    print_r($len);    echo "<br/>";    for($i = 0; $i < $len; $i++) {        $sum += func_get_arg($i);    }    echo "$sum";}getSum(1,2,3,4,5);

函数的返回值

  • 函数的返回值,通过return语句来实现;
  • 将函数的执行结果,返给了函数调用者;
  • return语句一旦执行,函数立即结束,函数剩余的代码不再执行了。
  • return语句有”中断”函数、”退出”函数;
  • return不能同时返回多个值,只能返回一个值。如果想返回多个值,可以放入数组

常用系统函数

字符串

  • 定义字符串基本语法
    • 单引号字符串
    • 双引号字符串
    • nowdoc字符串
    • heredoc字符串
  • 字符串常用api
    • strlen() 获取字符串长度
    • substr() 返回字符串的子串
    • strtoupper() 将字符串转化为大写
    • strtolower() 将字符串转化为小写
    • ucfirst() 将字符串的首字母转换为大写
    • trim() 去除字符串首尾处的空白字符
    • ltrim() 删除字符串开头的空白字符
    • rtrim() 删除字符串末端的空白字符
    • strrev() 反转字符串
    • strpos() 查找字符串首次出现的位置,从左往右查找
    • strrpos() 计算指定字符串在目标字符串中最后一次出现的位置,从右往左查找
    • strchr()和strstr() 两者一样,用于查找字符串的首次出现
    • str_replace() 子字符串替换
    • str_repeat() 重复一个字符串

数学

  • 常用函数
    • max() 求最大值
    • min() 求最小值
    • rand() 产生一个随机整数
    • mt_rand() 更高效的随机数
    • ceil() 进一法取整
    • floor() 舍去法取整
    • round() 对浮点数进行四舍五入
    • pow() 次方运算
    • abs() 求绝对值
    • sqrt() 开方运算

日期

  • 常用函数
    • time() 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数
    • date() 格式化一个本地时间/日期
    • microtime() 返回当前 Unix 时间戳和微秒数
    • strtotime() 将任何英文文本的日期时间描述解析为 Unix 时间戳
原创粉丝点击