PHP基础
一、初识PHP
PHP是与HTML混合使用的嵌入式语言。
1、PHP标记
默认标记<?php ?> 短标记<? ?>,需在php.ini中将short_open_tag选项开启 短标记和其他标记不提倡使用
2、关键字不区分大小写,用户自定义的类名和函数名不区分大小写,变量名区分大小写
3、输出
boolean print(参数) 返回布尔值
void echo(参数) 无返回值echo的效率要高一点
二、数据类型
1、比较两个浮点数的通常方法是先移动若干小数位,然后转换为整型数据再进行比较。
2、双引号做分隔符的字符串支持变量名解析,单引号做分隔符的字符串不支持变量名解析。
$name="张三";
"$name"=>张三 || '$name'=>$name || "$name先生"=>空 || "{$name}先生"=>张三先生 || "${name}先生"=>张三先生
3、字符串定义的方式:单引号,双引号和heredoc(<<<heredoc_markheredoc_mark)
4、对象类型必须显式的进行声明。类用关键字class定义,使用关键字new生成这个类的实例,使用->符号类访问类中的属性和方法
class car{public $cololr;function beep(){}}$mycar = new car; $mycar->color='red'; $mycar->beep();
5、PHP是一种弱语言类型,变量的类型会根据赋予的值自行确定,而且往往在变量声明的同时进行变量初值的赋值。
6、数据类型强制转换时,只须将需要的类型名写在变量前的括号内即可。
三、常量和变量
1、定义常量 define("常量名",表达式或值) 常量名建议全大写,但不是必需的
使用常量 直接使用定义的常量名,无须在常量名前加"$"
预定义常量:_FILE_当前PHP程序文件名 _LINE_当前PHP程序所在的行数(在哪指哪)
2、变量不需要显式的声明,在对变量赋初值时就对变量进行了声明。如果变量没有被设置初值,则其初值即为NULL。
3、变量的赋值:传值赋值和引用赋值。如$a=&$b; 即b原来指向了一个存储位置,引用赋值后,a也指向了这个存储位置,这时,a或b的销毁都不会对对方造成任何影响,但是如果其中一个的值改变了,则另一个也会作出相同的改变。
4、访问预定义变量之使用超全局变量,总共9个超全局变量
5、局部变量:在函数内定义的变量 只能在函数内使用
全局变量:在函数外定义的变量 默认只能在函数外使用
要想在函数内使用全局变量,需要在函数内将变量用global声明,或者使用超全局变量数组&GLOBALS["变量名"]
在PHP中,只有函数能提供局部作用域。
超全局变量$GLOBALS包含了全部的变量
静态变量的特点:只有在第一次被调用时进行初始化,函数结束后不销毁,并且下次使用时,该变量还保留原来的值。
静态变量只能在函数内定义和使用。
可变变量:将变量的名字也作为一个变量来使用。$a=b;$b=c;$$a=$b=c;
外部变量:使用GET方式能传递的数据最大为256字节,使用POST最大为2MB
四、流程控制(仅写与java等其他语言的不同)
1、交互格式(冒号语法) 不建议使用,经典的比较直观
2、foreach():该语法是专门为数组设计的
第一种格式foreach(target_array as $value) statement
第二种格式foreach(target_array as $key=>$value) statement
3、break 数字:要跳出的结构的层数
contiue 数字:要跳出的结构的层数
4、exit语句可以结束当前整个脚本的执行,通常用于错误检查。
exit; exit("错误原因");
die()是exit的别名 $conn=mysql_connect("localhost","root","") or die("无法连接到MySQL服务器");
五、数组
1、关联数组与数字索引数组唯一的区别在于索引的类型。
2、数字索引数组
初始化:直接为数组元素赋值array()函数
如果数组不存在,那么为数组元素赋值的同时即可创建该数组
如果数组元素是按顺序排列的数字,则在对数组进行初始化时,可以使用range()函数
range()有3个参数,第一个参数指定初始值,第二个参数指定终止值,第三个参数可选,用于指定步长
3、关联数组
初始化:直接为数组元素赋值array()函数
4、与数组相关的运算符
+ 联合 $a+$b 将$附件到$a之后,但是任何索引值冲突的元素将不会被添加
== 等于 $a==$b 如果$a和$b包含相同元素,返回true(索引值和元素必须都相同) 除了顺序,其他必须完全一样
!= <> 不等于
=== 恒等 如果$a和$b包含相同顺序的相同元素,返回true(索引值和元素必须都相同) 必须完全一模一样
!== 不恒等
5、数组的排序
boolean sort() 按数字和字母顺序排列 排列后会赋予新的索引值,原有索引值被删除
void asort()按升序对数组进行排序 排列后保留原来的索引关系
integer ksort() 按索引值升序进行排列
usort(数组,方法名)按用户自定义方法进行排序
array_multisort() 一次对多个数组进行排序
natsort() 按自然顺序排序,排序后保留原有的索引关系
natcasesort() 自然排序,不区分大小写
6、数组的反向排序
rsort() 对数组元素按降序排列
arsort()
krsort()
7、对数组进行重新排序
boolean shuffle() 对数组进行随机排列
array array_reverse() 将数组中的元素逆置
array array_flip() 将数组中的索引与其元素值兑换
8、数组的遍历
current() 获取数组中当前指针所指的元素值
next()将数组的指针向后移动一位,返回移动后指针所指向的元素的元素值
prev()将数组的指针向前移动一位,返回移动后指针所指向的元素的元素值
reset()指针设置回数组的起始位置
end() 将指针移动到数组的最后一个元素处
each()返回数组中当前指针所指向的“索引/元素值”对,并将数组指针向后移动一位
返回一个包含4个元素的数组,且该数组的索引分别为0,key,1,value
key() 返回数组当前指针所指向的索引值
array_walk()以相同的方式对数组中的每一个元素进行处理
array_reduce() 将自定义函数依次应用于数组的每个元素
9、其他的数组操作函数
list()从一个数组中一次提取多个值,并同时赋值给多个变量
count()/sizeof()计算数组中元素的个数