1、Lecture 2:PHP基础,实验课程目标 1.掌握PHP基本语法 2.掌握PHP变量、常量、数组与数据类型 3.掌握HTML中PHP的输出 4.掌握PHP基本控制流程,PHP语法的概述,PHP语法主要借鉴于C/C+,也部分参考了Java和Perl。 类似C语言,书写PHP代码的时候,每句完成代码后都要以分号“;”结束。 既然是一门编程语言,肯定会由多种编程元素组成,如变量、常量、运算符、控制语句、数组、字符串、函数和对象等。,PHP程序注释,通常使用: (1) / (2) /*/ (3) #,“; / 采用C+的注释方法/* 多行注释对于大段的注释很有用的哦 */echo “多行注释方法即
2、 /*.*/ “;echo “Unix的注释方法即 # “; # 使用 UNIX Shell语法注释 ?,类似ASP的,当然您也可以自己指定。通常情况下,有以下几种方式:,(1) /推荐使用 (2) (3) (4) ,嵌入方法,引用文件的方法有两种:include和requireinclude 的使用方法如: include(“MyIncludeFile.php“); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 require 的使用方法如: require(“MyRequireFile.p
3、hp“); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。,引用文件,标示符,标示符是适用于变量、函数和其他各种用户定义对象的一般术语。 标示符可以由一个或多个字符组成,但必须以字母或下划线开头。 标示符区分大小写。 标示符名不能与任何PHP预定义关键字。,PHP中的常量,PHP中对常量的类型要求是不严格的 常量分为预定义常量和自定义常量两种 预定义常量:PHP内部事先已经定义了的常量 预定义常量有多种不同的开头,决定了各种不同的类别 自定义常量:由用户
4、自行依据程序的需要来定义的常量 自定义常量的定义格式:define (“常量名”, 表达式或值) 例:define (“CONSTANT”, “Hello, World.”),示例,PHP的变量,1、PHP变量名的约定:(1) PHP的变量名区分大小写;(2) 变量名必须以美元符号$开始;(3) 变量名开头可以以下划线开始;(4) 变量名不能以数字字符开头. 2、PHP变量的类型:PHP变量数据类型的定义是通过变量的初始化,系统设定.$mystring = “我是字符串“ ; $NewLine = “换行了 “ ; $int1 = 38 ; 数据类型可分为二种: 一是标量数据类型 ,二是复合数
5、据类型。,标量数据类型: (1)布尔型(boolean) (2)整形(integer) (3)浮点型(float)(浮点数,也做”double”) (4)字符串(string) 复合数据类型 (1)数组(array) (2)对象(object) 另外,PHP中,还有两种特殊的数据类型: (1)资源(resource) (2) 空值(NULL),布尔型(boolean),这是最简单的类型。boolean 表达了真值,可以为 TRUE 或 FALSE。 注: 布尔类型是 PHP 4 引进的。 语法要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都是大小写不敏感的。 通常你用某些运算符返
6、回 boolean 值,并将其传递给流程控制。,整形(integer)和浮点型(float),整数大小超出其范围后,自动转化为双精度型,,浮点型(float),双精浮点型 浮点数(也叫“floats”,“doubles”或“real numbers”)可以用以下任何语法定义: 浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。,浮点数精度显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor(0.1+0.7)*10) 通常会返回 7 而不是预
7、期中的 8,因为该结果内部的表示其实是类似 7.9999999999.。 这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。 所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数库或者 gmp 函数库。,字符串(string),字符串可以用三种字面上的方法定义。 单引号 双引号 定界符,单引号指定一个简单字符串的最简单的方法是用单引号(字符 )括起来。 要表示一个单引号,需要用反斜线()转义,和很多其它语言一样。如果在单引号之前或字符串结尾需要
8、出现一个反斜线,需要用两个反斜线表示。注意如果你试图转义任何其它字符,反斜线本身也会被显示出来!所以通常不需要转义反斜线本身。 注: 在 PHP 3 中,此情况下将发出一个 E_NOTICE 级的警告。 注: 和其他两种语法不同,单引号字符串中出现的变量和转义序列不会被变量的值替代。,字符串(string),反斜线$美元符号“双引号0-71,3此正则表达式序列匹配一个用八进制符号表示的字符x0-9A-Fa-f1,2此正则表达式序列匹配一个用十六进制符号表示的字符 此外,如果试图转义任何其它字符,反斜线本身也会被显示出来! 双引号字符串最重要的一点是其中的变量名会被变量值替代。,字符串(stri
9、ng),定界符另一种给字符串定界的方法使用定界符语法(“”)。应该在 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。 结束标识符必须从行的第一列开始。同样,标识符也必须遵循 PHP 中其它任何标签的命名规则:只能包含字母数字下划线,而且必须以下划线或非数字字符开始。,字符串(string),3、检查变量的类型(var_dump()),$b类型是:; var_dump($b);echo $c类型是:; var_dump($c); ?,4变量的作用域,变量的使用范围,也叫做变量的作用域,作用域从技术上来讲,就是变量定义的上下文背景(也就是它的有效范围)。大部分PHP变量只有一个单
10、独的范围。这个单独的范围跨度同样包含了include和require引入文件,例如:这里变量$a将会在包含文件b.inc中生效。,在用户自定义函数中,一个局部函数范围将被引入。任何用与函数内部的变量按缺省情况将被限制在局部函数范围内。例如:这个脚本不会有任何输出,因为echo语句引用了一个局部版本的变量$a,而且在这个范围内,它并没有被赋值。你可能注意到PHP的全局变量和C语言有一点点不同,在C语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能漫不经心的改变一个全局变量。PHP中全局变量在函数中使用时必须申明为全局。,使用一个全局的变量 global关键字,以
11、上脚本的输出将是“3”。在函数中申明了全局变量$a和$b,任何变量的所有引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大数,PHP没有限制。,例如:,PHP超级全局变量,$_SERVER $_GET $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SESSION $GLOALS,5、连接符(.),在PHP中,字符串的连接符和C+语言以及Java等是非常不一样的。它使用“.”来做为连接符,而不是像我们其他语言一样,拥有点语法。,注:因为“.”只是字符串连接符,就好象VB里的“&”符号一样。,6、引号中的变量,以上脚本输出 your name i
12、s Jane 在PHP中,字符串内可以任意插入变量。,预定义变量的访问,直接访问(在全局变量前面加美元符号“$”)如:$REQUEST_METHOD,PHP中直接访问要修改php.ini设置: register_globals=OFF改成register_globls=“ON”,用$HTTP_VARS方法访问预定义变量,register_long_arrays=“OFF” 改成register_long_arrays=“ON”,超全局变量访问预定义变量,静态变量,利用static修饰的变量(见例子),PHP中的数组实际上是一个有序图。图是一种把value(值)映射到keys(键)的类型。此类型
13、在很多方面做了优化,因此可以把它当成真正的数组(真正的数组在前面的课程javascript已经学过了,这里只介绍与以前数组之间的区别)来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个PHP数组做为值,也可以很容易的模拟树。 解释这些结构超出了我们学习PHP的范围,但对于每种结构至少会发现一个例子。,4 数组,一、创建一个数组,语法:array array(mixed) 返回根据参数建立的数组。参数可以用=运算符给出索引。 注意:array()是一个语言结构,用于字面上表示数组,不是常规函数。, “bar”, 12= true); echo
14、$arr“foo”;/输出bar echo $arr12;/输出1 ? /key可以是整型或者是字符串,而value可以是任何值,二、操纵PHP数组,(一)在数组的末尾添加值 要向一个存在的索引数组中插入较多的值,可以使用 语法: $family = array(Fred,Wilma); $family = Pebbles; /$family2为Pebbles (二)指定值的范围 函数range()创建连续的整数或字符的数组,其值在传递给它的两个参数值之间,例如: $numbers = range(2,5);/$numbers = array(2,3,4,5) $letters = range
15、(a,z);/$letters保存字母表 $reversed_numbers = range(5,2);/reversed_numbers=array(5,4,3,2) 只有字符串参数的第一个字母用于建立范围: range(aaa,zzz); /与range(a,z)相同,(三)得到数组的大小函数 count()和sizeof()的使用方法和作用是相同的。他们返回数组中的元素数。使用哪一个函数没有格式上的有限选择,下面是一个例子: $family = array(Fred,Wilma,Pebbles); $size = count($family); $size为3,(四)填充数组,要用相同的
16、值创建一个初始化的数组,可使用array_pad()。array_pad()的第一个参数是该数组,第二个参数是你想要该数组拥有的最少元素数,第三个参数是为所创建的元素给出值。array_pad()函数返回一个新的填充数组,而抛弃它的参数数组。 下面例子反映了array_pad()的工作过程:,$scores = array(5,10); $padded = array_pad($scores,5,0); /$padded现在为array(5,10,0,0,0),(五)在数组中删除和插入元素 函数array_splice()可以在数组中删除或插入单元。 $removed = array_spli
17、ce(array,start,length,replacement );,删除 $subject=array(php,asp,,c,c#); $removed=array_splice($subject,2); 替换 $new=array(sql server,xml,mysql); Array_splice($subject,4,3,$new); 插入 Array_splice($subject,4,0,$new);,5 逻辑表达式I,每个流程控制语句都有两个独特的部分,一个是条件,另一个则是符合条件后执行的过程,而一般条件我们都是使用一个布尔表达式返回我们是否要执行这些执行过程。因为在计算机里,计算机只有真或假这两个逻辑,所以我们也只可以在程序里使用true或者false来表示是否来执行。,一、布尔常量 这里,最简单的表达式是一个简单的值,而我们的boolean类型的值我们知道,只有两个,不是true(真)即是false(假)。,