php数组 类和对象 接口使用方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-08 22:02:58 浏览: 评论:0
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)
- //开源代码phpfensi.com
- 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 constructorn";
- }
- }
- class subclass extends baseclass {
- function __construct() {
- parent::__construct();
- print "in subclass constructorn";
- }
- }
- $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);
- ?>
Tags: php数组 php类 php接口
- 上一篇:php生成word两种方法
- 下一篇:php中缓冲输出实例代码
相关文章
- ·php hash算法实现数组的方法(2014-09-06)
- ·PHP中STDCLASS的使用方法详解(2016-08-25)
- ·基于php双引号中访问数组元素报错的解决方法(2021-09-01)
- ·PHP中类静态调用和范围解析操作符的区别解析(2021-08-27)
- ·浅析PHP类的反射来实现依赖注入过程(2021-09-03)
- ·详细对比php中类继承和接口继承(2021-10-31)
- ·php 支付宝接口程序源码(2014-09-09)
- ·php飞信接口实例应用代码(2014-09-09)
- ·微信公众平台消息接口校验与消息接口响应例子(2014-09-22)
- ·php天翼开放平台短信发送接口实现(2014-09-22)
- ·PHP接口开发加密技术实例原理与例子(2015-04-13)
- ·PHP接口开发签名验证原理详解(2015-12-10)
- ·php版本的支付宝服务窗API接口的开发(2016-07-15)
- ·php抽象类与接口的区别详解(2018-10-30)
- ·PHP接口多继承及tarits实现多继承效果的方法(2021-08-27)
- ·php接口实现拖拽排序功能(2021-09-12)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)