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 相关文章推荐
如何使用PHP中的字符串函数
Oct 09 PHP
用session做客户验证时的注意事项
Oct 09 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
基于PHP array数组的教程详解
Jun 05 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 PHP
Yii数据库缓存实例分析
Mar 29 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
php判断目录存在的简单方法
Sep 26 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
PHP生成带有雪花背景的验证码
2006/10/09 PHP
mysq GBKl乱码
2006/11/28 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP 裁剪图片
2021/03/09 PHP
jquery创建div 实现代码
2009/04/27 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
Python素数检测实例分析
2015/06/15 Python
Python中如何获取类属性的列表
2016/12/26 Python
python爬虫的工作原理
2017/03/05 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
python线程池threadpool使用篇
2018/04/27 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
主治医师岗位职责
2013/12/10 职场文书
技校个人求职信范文
2014/01/25 职场文书
优秀教师获奖感言
2014/01/31 职场文书
手机银行营销方案
2014/03/14 职场文书
2015年教研工作总结
2015/05/23 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python