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)可以像堆栈一样使用数组。
$state[0]="beijing";
$state[1]="hebei";
$state[2]="tianjin";$city[]="shanghai";
$city[]="tianjin";
$city[]="guangzhou";$capital["china"]="beijing";
$capital["japan"]="tokyo";
echo count($city),'
';
array_push($capital,"paris");
$newarray=array_merge($city,$capital);
foreach($newarray as $elem)
echo $elem.’
’;
?>
输出结果为:
3
shanghai
tianjin
guangzhou
beijing
tokyo
paris
2. 类和对象
php5开始对面向对象编程有了很好的支持。php中的类的概念和其他面向对象的语言比如c#是十分相似的,它也是一个值和方法的聚合体,使用class关键字定义。例如:
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中使用extends关键字来实现类的继承,这是和java一致的:
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是一致的。
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);
?>
创造与魔法 安卓版v1.0.0750
创造与魔法是一款开放世界手游,在游戏中玩家可探索这个奇妙的世
创造与魔法修改版 最新版v1.0.0750
创造与魔法无限点券版是款探索冒险游戏,该款游戏的操作还是蛮自
战争与文明官方版本 安卓版v1.7.16
战争与文明是一款由上海邮通科技有限公司开发的战争策略游戏,这
迷你世界0元领皮肤无限迷你币版 最新安卓版v1.43.0
迷你世界0元购买皮肤版是这款开放沙盒冒险建造游戏的特殊破解版
创造与魔法无限经验版 安卓版v1.0.0750
创造与魔法无限经验版是款可以改造环境,整个游戏的自由度还是蛮