1、php是什么?,PHP 是什么? PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 WEB 开发。 以上是一个简单的回答,不过这是什么意思呢?请看如下例子: 例子 1-1. 一个介绍性的范例Example ,php书写规范,用来标记 PHP 代码块的标记共有四套: . . . 上述两种方式总是有效。这两种方式需要在php.ini中去配置才能生效。 一般使用第一种方式。示例: 你好,一搏!” echo “ccopen,开源中国”; ?,php页面的解释,Hello.php页
2、面: _ php页面谁先执行 你好,一搏!” echo “ccopen,开源中国”; ?apache服务器处理页面的原理: 普通的html、javascript、css代码原样输出; php代码,将由php引擎解释,最终输入html代码。 一般地,apache对*.htm或者 *.html文件,不作php解释,所以将原样输出。所以,在普通的.htm、.html页面中,不能写php代码。,php的注释,PHP 支持 C,C+ 和 Unix Shell 风格的注释。/ 单行注释 /* */ 多行注释 # Unix风格注释应该养成注释的习惯,这样能提高代码的可读性,缩短后期维护的时间。例如: ,变量
3、(自定义变量),基础 PHP 中一个美元符号后面跟上一个变量名称,即表示一个变量。变量的名称是对大小写敏感的。 变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。 ?php $var = “Bob”; $Var = “Joe”; echo “$var, $Var”; /输出 “Bob, Joe” $4site = not yet; / 不能以数字开始 $_4site = not yet; / 可以以下划线开始 $t#yte = mansikka; /无效变量名,变量(预定义变量),PHP 超全局变量 $GLOBAL
4、S 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键标为全局变量的 名称。从 PHP 3 开始存在 $GLOBALS 数组。 $_SERVER 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。 $_GET 经由 HTTP GET 方法提交至脚本的变量。类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用)。 $_POST 经由 HTTP POST 方法提交至脚本的变量。类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用)。 $_COOKIE 经由
5、HTTP Cookies 方法提交至脚本的变量。类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用)。 $_FILES 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)。 $_ENV 执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。 $_REQUEST 经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。,变量(预定义变量),PHP 服务器变量 REQUEST_METHOD 获得对应页面方法。如:ge
6、t、post QUERY_STRING 获取对应页面的请求字符串。 DOCUMENT_ROOT 获得根目录。 HTTP_REFERER 链接到当前页面的前一页面的 URL 地址 REMOTE_ADDR 正在浏览当前页面用户的 IP 地址。 用法: $_SERVERQUERY_STRING,Php.ini文件的配置 register_globals = On,变量(和表单相关联),变量(作用范围), 在方法内,欲使用全局变量,需用global 来声明:结果为:3, 结果为:200;,变量($GLOBALS及类型判断),使用 $GLOBALS 替代 global /注意这里的$GLOBALS 一定
7、要是大写的!后面的global大小写均可!is_array(),is_float(),is_int(),is_object() 和 is_string()来判断变量的类型,是相应类型,返回true,否则返回false。,变量的名称被存放在另一个变量里 $pet=“abc”; $clown=“pet”; echo $clown; /显示pet; echo $clown;/显示”abc” 注意:我们这样写也可以的,echo $clown;,变量(可变变量/动态变量),常量_自定义常量,常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是
8、常量)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。 语法 可以用 define() 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。 常量只能包含标量数据(boolean,integer,float 和 string)。 常量和变量不同: 常量前面没有美元符号($); 常量只能用 define() 函数定义,而不能通过赋值语句; 常量可以不用理会变量范围的规则,可以在任何地方定义和访问; 常量一旦定义就不能被重新定义或者取消定义; 常量的值只能是标量。 ,常量_预定义常量,PHP 向它运行的任何脚本提供了大量的预定义常量,也称为魔术常量。 _LINE_文件中的当前行号。
9、 _FILE_文件的完整路径和文件名。 _FUNCTION_函数名称(这是 PHP 4.3.0 新加的)。 _CLASS_类的名称(这是 PHP 4.3.0 新加的)。 _METHOD_类的方法名(这是 PHP 5.0.0 新加的)。 PHP_VERSION 这个是当前 PHP 的版本,如 3.0.8-dev。 PHP_OS PHP所在的操作系统的名字,如 WINNT。 E_ERROR 这个常量指到最近的错误处。 E_WARNING 这个量数指到最近的警告处。 E_PARSE 本常量为剖析语法有潜在问题处。 E_NOTICE 这个常式为发生不寻常但不一定是错误处。例如存取一个不存在的变量。 这
10、些 E_ 开头形式的常量,可以参考 error_reporting() 函式,有更多的相关说明。,数据类型,PHP 支持八种原始类型四种标量类型: 布尔型(boolean) 整型(integer) 浮点型(float)(浮点数,也作“double”) 字符串(string) 两种复合类型: 数组(array) 对象(object) 两种特殊类型: 资源(resource) NULL,类型_布尔型,这是最简单的类型。总计有两个值,可以为 TRUE 或 FALSE。语法 要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都是大小写不敏感的。 转换为布尔值 数值0,0.0 、空数组、空字符
11、串,转换为布尔型时,为false; 非零值(不论正负),被认为是 TRUE! ,类型_数值型,整型 一个 integer 是集合 Z = ., -2, -1, 0, 1, 2, . 中的一个数。 语法 整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。 如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x。 例子 6-1. 整数文字表达浮点型 ,类型字符串1,PHP 没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。 语法 字符串可以用三种字面上的方法定义。 单引号 双引号 定界符 单引号支持的转义符少,主要使用双引号。
12、 常用的转义符:,类型字符串2,定界符 另一种给字符串定界的方法使用定界符语法(“,类型字符串3,串接和变量 为了把变量和字符串连接在同一行了,可以使用(.)。 (.)是一个操作符号,作用于其两侧的表达式。如果两侧的表达式是数值和字符串,PHP会把数字转化为字符串。 ;,类型数组1,PHP 中的数组实际上是一个”有序映射”。把值映射到关键字上。数组就是“关键字-值”的集合。 语法 定义 array() 可以用 array() 语言结构来新建一个 array。它接受一定数量用逗号分隔的 key = value 参数对。 array( key = value , . ) / key 可以是 int
13、eger 或者 string / value 可以是任何值“bar“, 12 = true); echo $arr“foo“; / bar echo $arr12; / 1 ? key 可以是 integer 或者 string。如果键名是一个 integer 的标准表达方法,则被解释为整数(例如 “8” 将被解释为 8,而 “08” 将被解释为 “08”)。PHP 中数组下标的变量类型不会对数组造成影响,数组的类型只有一种,它可以同时包含整型和字符串型的下标。 值可以是任何值。 5, 13 = 9, “a“ = 42); echo $arr6;?,类型数组2,数组的初始化: 方法1: $ar
14、r=array(red=regcolor,blue=bluecolor); $arr=array(1,33,44,55);方法2: $value)echo $key.“-“.$value; ?,类型数组3,相关函数:each($arr)函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动 。 list() 一般与each()元素使用,将数组元素分解一系列的值。 count($ayy); 获得数组的个数 unset($arr0);删除数组中的元素。 array_slice($ayy,int offset,int length); 获得数组的子集 array_un
15、shift($ayy,key=value); 向数组开头插入元素 array_push($ayy,key=value); 向数组结尾插入元素 array_values()函数将返回整个数组元素,并将元素中的键变为数值键。 sort($arr) 按值正向排序 Asort($arr) 按值正向排序,保持关键字和值的对应关系 rsort($arr)反向排序 Arsort($arr)按值反向排序,保持关键字和值的对应关系 ksort($arr)按照关键字排序,保持对应关系 $arr=array(df,aa,bb);while($el=each($arr)echo “.$el“key“;echo “.$
16、el“value“;while(list($a,$b)=each($arr)echo “.$a;echo “.$b;,类型数组4,“red“,3=“blue“); $a=“ss“; echo $a4; unset($aa); unset($a);/删除整个数组 ? 注: unset() 函数允许取消一个数组中的键名。要注意数组将不会重建索引。one, 2 = two, 3 = three ); unset( $a2 ); /* 将产生一个数组,定义为 $a = array( 1=one, 3=three); 而不是 $a = array( 1 = one, 2 = three); */ $b
17、= array_values($a); / Now b is array(1 = one, 2 =three) ?,类型对象,对象 对象初始化 要初始化一个对象,用 new 语句将对象实例到一个变量中。 do_foo(); ? 转换为对象 如果将一个对象转换成另一对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。对于任何其它的值,名为 scalar 的成员变量将包含该值。 scalar; / outputs ciao ?,类型 NULL,NULL 特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。 注: NULL 类型是 PHP 4 引进的。 在下列情况下一个变量被认为是 NULL: 被赋值为 NULL。 尚未被赋值。 被 unset()。 语法 NULL 类型只有一个值,就是大小写敏感的关键字 NULL。 ,