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


Posted in PHP onJanuary 12, 2011

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新增的,用来判断一个对象是不是某个类的实例,或者它的类型是不撒实现了某个接口。
PHP 相关文章推荐
linux php mysql数据库备份实现代码
Mar 10 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
详解PHP中的Traits
Jul 29 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 #PHP
php数据库密码的找回的步骤
Jan 12 #PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 #PHP
php 变量未定义等错误的解决方法
Jan 12 #PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 #PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 #PHP
PHP日期处理函数 整型日期格式
Jan 12 #PHP
You might like
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
PHP安装全攻略:APACHE
2006/10/09 PHP
php array_search() 函数使用
2010/04/13 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
javascript this详细介绍
2016/09/19 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
node.js通过url读取文件
2020/10/16 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
python解析xml模块封装代码
2014/02/07 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python使用多进程的实例详解
2018/09/19 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
C语言中break与continue的区别
2012/07/12 面试题
ASP.NET中的身份验证有那些
2012/07/13 面试题
实习单位推荐信范文
2013/11/27 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
三八妇女节寄语
2015/02/27 职场文书
丧事答谢词大全
2015/09/30 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫