PHP学习笔记之二

1. 数组
PHP的数组其实是一个关联数组,或者说是哈希表。PHP不需要预先声明数组的大小,可以用直接赋值的方式来创建数组。例如:
//最传统,用数字做键,赋值
$state[0]="Beijing";
$state[1]="Hebei";
$state[2]="Tianjin";
//如果键是递增的数字,则可以省略
$city[]="Shanghai";
$city[]="Tianjin";
$city[]="Guangzhou";
//用字符串做键
$capital["China"]="Beijing";
$capital["Japan"]="Tokyo";
用array()来创建数组会更加方便一点,可以将数组元素作为array的参数传递给他,也可以用=>运算符创建关联数组。例如:
$p=array(1,3,5,7);
$capital=array(“China”=>”Beijing”, “Japan=>”Tokyo”);
array其实是一种语法结构,而不是函数。和array类似,还有一个list(),它可以用来提取数组中的值,并给多个变量赋值。例如:
list($s,$t)=$city;
echo $s,' ',$t;
输出结果:Shanghai Tianjin
注意,list方法只能用于由数字索引的数组。
PHP内建了一些常用的数组处理函数,具体可以参考手册。常用的函数举例如下,count或者sizeof可以得到数组的长度,array_merge 可以合并两个,或者多个数组,array_push(pop)可以像堆栈一样使用数组。
复制代码 代码如下:

<?php
$state[0]="Beijing";
$state[1]="Hebei";
$state[2]="Tianjin";
$city[]="Shanghai";
$city[]="Tianjin";
$city[]="Guangzhou";
$capital["China"]="Beijing";
$capital["Japan"]="Tokyo";
echo count($city),'<br/>';
array_push($capital,"Paris");
$newarray=array_merge($city,$capital);
foreach($newarray as $elem)
echo $elem.'<br/>';
?>

输出结果为:
3
Shanghai
Tianjin
Guangzhou
Beijing
Tokyo
Paris
2. 类和对象
PHP5开始对面向对象编程有了很好的支持。PHP中的类的概念和其他面向对象的语言比如C#是十分相似的,它也是一个值和方法的聚合体,使用class关键字定义。例如:
复制代码 代码如下:

<?php
class AuthUser {
protected $userName;
protected $password;
public function __construct($userName,$password) {
$this->userName=$userName;
$this->password=$password;
}
public function GetUserName() {
return $userName;
}
public function ChangePassword($old,$new) {
if($this->password==$old) {
$this->password=$new;
return true;
}else
return false;
}
public function Login($password) {
return $this->password==$password;
}
public static function CreateUser($userName,$password) {
$user=new AuthUser($userName,$password);
return $user;
}
}
$user=AuthUser::CreateUser("Admin","123");
echo $user->GetUserName();
if($user->ChangePassword('abc', 'new'))
echo 'ChangePassword success';
else
echo 'Change Password fail';
$user->ChangePassword("123", "321");
if($user->Login("321"))
echo "Login";
else
echo "Login fail";
?>

上面是一个虽然没有什么用但是语法结构上较为完整的类。首先使用class关键字定义类的名字,内部可以定义字段和方法。字段和方法的修饰词可以是private,protected,public 和 final(仅方法有)。其含义和其它语言一致。不再赘述。不同的地方在于,PHP不支持函数的重载。另外,PHP5的构造函数的定义是__construct,注意前缀是两个下划线。PHP4的构造函数的定义和其它语言一致,是和类名一样的函数,PHP5也兼容这种写法。PHP5还支持析构函数,名字是__destruct。在函数内部,可以使用$this变量来获得当前对象的引用。 PHP也支持静态函数,同样是使用static关键字修饰。示例中最后一个函数就静态函数。静态函数不能通过类的实例引用。
类的定义下面是使用类的代码示例,PHP也是通过new关键字来实例化一个类。通过->运算符来引用对象的方法。注意其静态类的引用方法是::,这是和C++一致的。
下面再简单介绍下类的继承。PHP中使用extends关键字来实现类的继承,这是和Java一致的:
复制代码 代码如下:

<?php
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}
$obj = new BaseClass();
$obj = new SubClass();
?>

输出的结果是: In BaseClass constructor In BaseClass constructor In SubClass constructor
要注意,PHP的子类的构造函数不会自动调用父类的构造函数,必须在程序中显式地调用。使用parent关键字可以得到父类的引用。另外,由于PHP本身是弱类型的,所以“多态“的概念也不存在了,实际上,它永远都是多态的。
接口
接口定义了一组方法,但不实现他们。其语法为:
interface IInterfaceName
{
//常量、函数定义
}类利用implements关键字来表面实现某个接口,这和Java是一致的。
复制代码 代码如下:

<?php
interface IAddable{
function Add($something);
}
class AddClass implements IAddable
{
private $data;
function AddClass($num){
$data=$num;
}
public function Add($something)
{
$data+=$something;
return $data;
}
}
$a=new AddClass (5);
echo $a instanceof IAddable;
echo $a->Add(10);
?>

其中 instanceof关键字是PHP5新增的,用来判断一个对象是不是某个类的实例,或者它的类型是不撒实现了某个接口。

时间: 2024-12-22 06:12:54

PHP学习笔记之二的相关文章

WPF and Silverlight学习笔记(二十五)

WPF and Silverlight学习笔记(二十五):使用CollectionView实现对绑定数据的排序.筛选.分组 在第二十三节,我们使用CollectionView实现了对于绑定数据的导航,除导 航功能外,还可以通过CollectionView对数据进行类似于DataView的排序.筛选 等功能. 一.数据的排序: 使用第二十四节的数据源,查询所有 的产品信息: 1: <Window x:Class="WPF_24.CollectionViewSortData" 2:

HTML5 video标签(播放器)学习笔记(二):播放控制

HTML5 video标签(播放器)学习笔记(二):播放控制 本文的目录: 1.获取影片总时长 2.播放.暂停 3.获取影片已播放时间和设置播放点 4.音量的获取和设置 第一.获取影片总时长 对播放器(video)操作,首先要得到的是影片的一些信息,其中一个就是总时长,除了内容以为,总时长也是第一时间要显示的.在对video进行操作的的前先给video标签添加一个ID,这样方便我们获取video元素 代码如下: <video id="myVideo" controls prelo

VSTO学习笔记(二)Excel对象模型

原文:VSTO学习笔记(二)Excel对象模型 上一次主要学习了VSTO的发展历史及其历代版本的新特性,概述了VSTO对开发人员的帮助和效率提升.从这次开始,将从VSTO 4.0开始,逐一探讨VSTO开发中方方面面,本人接触VSTO时间不长,也是一次尝试.鉴于Excel在整个Office家族中的重要地位,故先从Excel开始介绍,后续内容会陆续介绍Word.PowerPoint.Outlook.InfoPath等.由于VSTO 4.0建立在Office 2010基础之上,先介绍一下Office

kvm虚拟化学习笔记(十二)之kvm linux虚拟机在线扩展磁盘

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1295296 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

Akka学习笔记(二):Actor Systems

Akka学习笔记(二):Actor Systems 图中表示的是一个Actor System,它显示了在这个Actor System中最重要实体之间的关系. 什么是actor,是一个封装了状态和行为的对象,每个actor都通过message交流,从自己的mailbox中读取别的actor发送的消息. 注意: ActorSystem是重量级的对象,会创建1...N个线程,所以一个application一个ActorSystem. 层次结构 假设有一个actor,它的一个功能过于复杂,为了降低复杂度

Mysql学习笔记(二)数据类型 补充

原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求   String类型: i.char与varchar char与varchar的类型相似,但是他们的保存方式和检索方式不同... char的存储结构是固定长度的存储...即指定了几个字节,那么就占用几个字节,如char(4),那么无论存入的是什么字串,那么都占用四个字节...char的 可表示长度范围为0-255的任何值,当保存的字

Jquery 学习笔记(二)jQuery性能优化指南

Jquery 学习笔记(二) -jQuery性能优化指南 2009年11月30日 一 作者:   邦畿千里   1,总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法. 例如有一段HTML代码: <div id="content"> <form method="post" action="#"> <h2>交通信号灯<

PHP学习笔记之二 php入门知识_php基础

PHP学习笔记之二 1. 数组 PHP的数组其实是一个关联数组,或者说是哈希表.PHP不需要预先声明数组的大小,可以用直接赋值的方式来创建数组.例如: //最传统,用数字做键,赋值 $state[0]="Beijing"; $state[1]="Hebei"; $state[2]="Tianjin"; //如果键是递增的数字,则可以省略 $city[]="Shanghai"; $city[]="Tianjin&quo

2015年容器技术峰会学习笔记(二)

本文讲的是2015年容器技术峰会学习笔记(二),[编者的话]这是2015容器技术峰会学习笔记的第二篇,在这里,作者继续讲述有关容器的诸多轶事,华尔街之狼? 开源巨头? 初创团队? 让我们一起去看看他们是怎么玩的容器的吧! @Container容器技术大会将于2016年1月24日在北京举行,来自爱奇艺.微博.腾讯.去哪儿网.美团云.京东.蘑菇街.惠普.暴走漫画等知名公司的技术负责人将分享他们的容器应用案例. 昨天我们发布了这次容器技术峰会笔记的第一部分.今天继续!我们将给大家分享更多其他的在现场听

C#开发WINDOWS应用程序时消息的处理(C#学习笔记之二)

作者:浙江省温岭市电信局 王骏WINDOWS应用程序是靠消息驱动的,在VC中我们通过CLASSWIZARD可以为某窗口类添加消息处理函数,CLASSWIZARD将为你添加消息映射,对于WINDOWS消息,生成的消息处理函数重载了基类的虚拟方法.而在C#中如何处理消息呢?本文针对VS.NET BETA1环境下的C#简单地介绍WINDOWS消息以及自定义消息的处理方法.示例代码下载 17K一.生成一个名为MSGApplication的工程工程的建立方法请参考:C#学习笔记之一二.处理WM_PAINT