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类
Nov 27 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
php数组冒泡排序算法实例
May 06 PHP
PHP链表操作简单示例
Oct 15 PHP
laravel5实现微信第三方登录功能
Dec 06 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
php的ajax简单实例
2014/02/27 PHP
php判断当前操作系统类型
2015/10/28 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
编写Python CGI脚本的教程
2015/06/29 Python
Python多线程实现同步的四种方式
2017/05/02 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
办理护照介绍信
2014/01/16 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
运动会解说词100字
2014/01/31 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android