PHP入门(二)
1、数组
通过array()创建新数组
<?php $arr = array();
- 索引数组
(1)赋值
$arr[0]='apple'; $arr = array('0'='apple');
(2)访问
除了使用for循环访问数组的值之外(和c语言相似),还可以采用foreach循环$num = array('1','2','3'); foreach($num as $key=>$value){ echo '<br>第'.$key.'值是:'.$value; }
结果输出如下:
第0值是:1 第1值是:2 第2值是:3
- 关联数组
关联数组和索引数组的区别不大,索引数组其实是将索引与数值关联起来的特殊的关联数组。两者的赋值和访问均相似。
(1)赋值
$arr=array('apple'=>'苹果');
(2)访问
同上!
2、类和面向对象
- 类
(1)public(外部可以访问,默认function为public)
a.static静态属性
访问使用:: 不允许使用->和伪变量$this;
不需要实例化,可直接通过类名进行调用。
class Car{ public static function getSpeed(){ return self::$speed; } } echo Car::getSpeed();//调用静态方法
b.除了static的
一般通过->进行访问;
允许使用伪变量$this。
class Car{ public $speed = 0;//汽车的初速为0; public function speedUp(){ $this->speed += 10; return $this->speed; } }
(2)protected
不允许外部调用!可被自身以及子类父类访问!
(3)private
不允许外部调用!只能被定义所在的类访问!
- 对象与方法
(1)对象和对象继承
a.对象通过new关键字实例化
b.对象继承格式:function + 子类名 + extends + 父类名
class Car{ ... } class Truck extends Car{ ... }
(2)function
面向过程中function称为函数;面向对象中function称为方法。
- 构造函数与析构函数
(1)构造函数
a.对象创造时调用,常用来初始化
b.常用__construct
c.子类若定义了__construct,则不会调用父类的,若要调用,使用parent::__construct
d.若构造函数定义成了私有方法,则不能直接实例化对象,只能通过静态方法进行实例化(2)析构函数
a.对象所有引用被删除或者对象被显式销毁式调用
b.常用__destruct
- 重载(_call)de简单运用
a.重载是动态创建属性和方法
b.__set——赋值;__get——读取;
__isset——判断属性是否设置;
__unset——销毁属性。
- 高级特性
(1)俩’=‘与仨’=’
判断属性是否全等用前者;判断两变量是否为同一个对象的引用用后者。
(2)clone方法
若变量a等于变量b的克隆,那么 a = = a== a==b——true;但是 a = = = a=== a===b——false。
class Car{ ... } $a = new Car(); $b = clone $a; if($a == $b) echo '=='; //true if($a === $b)echo '==='; //false
(3)序列化
a.对象序列化
serialize将对象序列化为字符串,用于存储或者传递数据。
b.反序列化
unserialize将字符串反序列化为对象。
3、正则表达式
- 分隔符(非数字、非反斜线、非空格)
a.常用正斜线(/)、hash符号(#)、取反符号(~)
b.若模式中包含分隔符,使用反斜杠()或者preg_quote进行转义。
c.分隔符后可使用模式修饰符(i,m,s,x…)
e.g. i是忽略大小写进行匹配
- 元字符与转义
(1) \——转义
(2) ‘.’——匹配除换行符之外的字符;
\s——匹配空白符(空格、制表符、换行符);
\w——匹配字母、数字、下划线。
(3) ?——量词,表示0或1次匹配;
*——0或多次匹配;
+——1或多次匹配。
- 贪婪模式与懒惰模式
(1)贪婪模式
在元字符之后使用+;
可匹配可不匹配时,优先匹配。
(2)懒惰模式
在元字符之后使用?
可匹配可不匹配时,优先不匹配。
(3)‘准确模式’
当准确知道所匹配的字符数时,可以使用{}指定匹配字符数。