PHP的知识结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.4处理数组的函数
(1).数组操作的基本函数
数组的键名和值 array_values($arr); 获得数组的值 array_keys($arr); 获得数组的键名 array_flip($arr); 数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple",$arr); 在数组中检索apple array_search("apple",$arr); 在数组中检索apple ,如果存在返回键名 array_key_exists("apple",$arr); 检索给定的键名是否存在数组中 isset($arr[apple]): 检索给定的键名是否存在数组中
2.数组与数据结构篇
2.1数组
2.1.1数组概述
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化, 因此可以把它当成真正的数组,或列表(向量),散列表 (是映射的一种实现),字典,集合,栈,队列以及更多可 能性。由于数组元素的值也可以是另一个数组,树形结构和 多维数组也是允许的。 <?php $foo[bar] = 'enemy'; echo $foo[bar]; // etc ?> 这个要把bar换成‘bar’,因为键值只能是整数或字符串
(7).递归函数
在 PHP 中可以调用递归函数。但是要避免递归函数/方 法调用超过 100-200 层,因为可能会使堆栈崩溃从而使当 前脚本终止。
(8).使用系统函数库 使用系统函数,最好先确定其规定的返回值类型, 如果传递给函数的参数类型与实际的类型不一致, 例如将一个 array 传递给一个 string 类型的变量, 那么函数的返回值是不确定的。在这种情况下, 通常函数会返回 NULL。但这仅仅是一个惯例, 并不一定如此。
一个可变变量获取了一个普通变量的值作为这个可 变变量的变量名。即$a = 'hello';$$a= 'word',则 echo "$a ${$a}";输出跟echo "$a $hello";都为 hello word
1.3变量类型
布尔型(boolean) 整型(integer) 浮点型(float和double) 字符串(String) 数组(Array) 对象(Object) 资源类型(Resource) NULL类型 伪类型 数据类型之间的转换
1.5PHP中的运算符 (不一一列举)
• • • • • • • • • 算数运算符 字符串运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 其他运算符 运算符优先级 表达式
1.6流程控制
1.6.1分支结构
(1)单一条件分支结构(if)
<?php if (expr) statement ?>//if 语句可以无限层地嵌套在其它 if 语句中
1.基本语法篇
1.1PHP语法格式
(1).PHP在Web开发中的应用
服务器端脚本语言,处理数据库,动态处理图片, 文件等
(2).PHP的环境搭建 服务器用Linux,web服务器用Nginx,数据库用MySQL, 后台语言是PHP (3).语言标记 指令分隔符“;”在一个 PHP 代码段中的最后一行可以 不用分号结束 (4).程序注释 单行注释//在 // ... ?> 或者 # ... ?> 之后的 HTML 代码将 被显示出来:?> 跳出了 PHP 模式并返回了 HTML 模式 多行注释/* */要避免嵌套注释的出现
(3).函数的工作原理和结构化编程 一个函数用途的伪代码: <?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Example function.\n"; return $retval; } ?>解决问题的标准方法 (4).php变量范围 大部分的 PHP 变量只有一个单独的范围,代码段内。 或者,这个单独的范围跨度同样包含了 include 和 require 引 入的文件。
(2).双向条件分支结构(else子句)
<?php if ($a > $b) { echo "a is greater than b"; } else { echo "a is NOT greater than b"; } ?>
(3).多向条件分支结构(也是用else子句)
<?php if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?>
(3).联合使用list()、echo()和while循环遍 历数组 (4).使用数组的内部指针控制函数遍历数组
current($arr); 返回数组中的当前单元 pos($arr); 返回数组中的当前单元 key($arr); 返回数组中当前单元的键名 prev($arr); 将数组中的内部指针倒回一位 next($arr); 将数组中的内部指针向前移动一位 end($arr); 将数组中的内部指针指向最后一个单元 reset($arr; 将数组中的内部指针指向第一个单元 each($arr); 将返回数组当前元素的一个键名/值的构造数 组,并使数组指针向前移动一位 list($key,$value)=each($arr); 获得数组当前元素的键 名和值
(2).使用foreach语句遍历数组
foreach($array as $ key => $value){ echo "$key --> $value"; }//方法1,访问数组元素的键和值 foreach($array as $ value){ echo $value; }//方法2,访问数组元素值 $array为数组名称,$key为一个数组键名,&value为键 名对应值。foreach语句可以遍历数字索引数组和关 联数组
(3).魔术常量
__LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被 包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径 (如果是符号连接,则是解析后的绝对路径),而在此之前的版本有 时会包含一个相对路径。 __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文 件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则 目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) = __FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返 回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小 写字母的。 __CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该 类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母 的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时, __CLASS__ 是调用 trait 方法的类的名字。 __TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返 回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作 用区域(例如 Foo\Bar)。 __METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的 名字(区分大小写)。 __NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在 编译时定义的(PHP 5.3.0 新增)。
1.4PHP中的常量
(1).常量的定义和使用
常量是一个简单值的标识符(名字)。如同其名称 所暗示的,在脚本执行期间该值不能改变(除了所 谓的魔术常量,它们其实不是常量)。常量默认为 大小写敏感。传统上常量标识符总是大写的。
(2).常量和变量
常量和变量有如下不同: 常量前面没有美元符号($); 常量只能用 define() 函数定义,而不能通过赋值 语句; 常量可以不用理会变量的作用域而在任何地方定义 和访问; 常量一旦定义就不能被重新定义或者取消定义; 常量的值只能是标量。
2.2数组的遍历
(1).使用for循环遍历数组
for语句只能用于数字索引数组的遍历。先用count ()函数计算出数组元素个数,以便作为for循环执 行的条件,完成数组的遍历,语法格式如下: for ($i=0;&i < count($array);&i++){ echo $array[&i]."<br/>"; } 注意:如果关联数组的关键字不是数字,就无法用 这个方法来遍历了
(5).程序中空白的处理
只有在<?php?>里面的内容才会被php解释器解析,所以php 可以在HTML文件里面混用。但当 PHP 解释器碰到 ?> 结束 标记时就简单地将其后内容原样输出(除非马上紧接换行 ) 直到碰到下一个开始标记,所以用到高级分离技术 <?php if ($expression == true): ?> This will show if the expression is true. <?php else: ?> Otherwise this will show. <?php endif; ?>
2.3预定义数组
服务器变量: $_SERVER 环境变量: $_ENV HTTP GET 变量: $_GET HTTP POST 变量: $_POST request变量: $_REQUEST HTTP 文件上传变量:$_FILES HTTP Cookies: $_COOLIE Session变量: $_SESSION Global变量: $GLOBALS
1.8PHP中的函数
(1).函数的定义
任何有效的 PHP 代码都有可能出现在函数内部,甚 至包括其它函数和类定义。 是编程的最小单位。
(2).自定义函数
PHP 中的所有函数和类都具有全局作用域,可以定 义在一个函数之内而在之外调用,反之亦然。 PHP 不支持函数重载,也不可能取消定义或者重定义已 声明的函数。
2.1.2数组的定义
(1).直接赋值的方式声明数组
如$arr['0'] = "php笔记";
(2).使用array()语言结构新建数组
可以用 array() 语言结构来新建一个数组。它接受任意数量 用逗号分隔的 键(key) => 值(value)对。键值可以被覆 盖
(3).多维数组的声明
如:
$fruits = array ( "fruits" => array ( "a" => "orange", "b" => "banana", "c" => "apple" ), .....
(4).多向条件分支结构(switch)
和其它语言不同,continue 语句作用到 switch 上的作用 类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。
1.6流程控制
1.6.2循环结构 (1).while语句 while (expr) statement (2).do..while循环 <?php $i = 0; do { echo $i; } while ($i > 0); ?> (3).for语句 for (expr1; expr2; expr3) statement
1.2php变量
(1).变量的声明
PHP 中全局变量在函数中使用时必须声明为 global。 其她数据类型可以直接赋值,不用声明类型。虽然 PHP里面变量不用初始化,但是会使变量默认false
(2).变量的命名
变量名第一个单词首字母小写,其余单词首字母大写, 遵循“驼峰式”命名约定。
(3).可变变量
(5).参数的传递
值传递 引用传递 可选参数 如果传入的是一个对象,可以更改该对象值
(6).变量函数
PHP 支持可变函数的概念。这意味着如果一个变量 名后有圆括号,PHP 将寻找与变量的值同名的函数, 并且尝试执行它。可变函数可以用来实现包括回调 函数,函数表在内的一些用途。 可变函数不能用于例如 echo,print,unset(), isset(),empty(),include,require 以及类似的语 言结构。需要使用自己的包装函数来将这些结构用 作可变函数。