ホームページ >php教程 >php手册 >php数组 类和对象 接口使用方法

php数组 类和对象 接口使用方法

WBOY
WBOYオリジナル
2016-05-25 16:38:481609ブラウズ

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),&#39;<br/>&#39;; 
array_push($capital,"paris"); 
$newarray=array_merge($city,$capital); 
foreach($newarray as $elem) 
//开源代码phprm.com 
echo $elem.&#39;<br/>&#39;;

 

//输出结果为: 
//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(&#39;abc&#39;, &#39;new&#39;)) 
  echo &#39;changepassword success&#39;; 
else 
  echo &#39;change password fail&#39;; 
$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);


本文地址:

转载随意,但请附上文章地址:-)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。