加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-08-12 09:34:18 所属栏目:PHP教程 来源:
导读:php数组 类和对象 接口使用方法

1. 数组

php的数组其实是一个关联数组,或者说是哈希表,php不需要预先声明数组的大小,可以用直接赋值的方式来创建数组,例如:

//最传统,用数字做键,赋值
$state[0]="beijing
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) 
        //开源代码Cuoxin.com 
            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 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); 
?> 
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章