首頁 php教程 php手册 php数组 类和对象 接口使用方法

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

May 25, 2016 pm 04:38 PM
php介面 php數組 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),&#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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1242
24
如何利用php介面和ECharts產生可視化的統計圖表 如何利用php介面和ECharts產生可視化的統計圖表 Dec 18, 2023 am 11:39 AM

在今天數據視覺化變得越來越重要的背景下,許多開發者都希望能夠利用各種工具,快速產生各種圖表與報表,以便能夠更好的展示數據,幫助決策者快速做出判斷。而在此背景下,利用Php介面和ECharts函式庫可以幫助許多開發者快速產生可視化的統計圖表。本文將詳細介紹如何利用Php介面和ECharts庫產生視覺化的統計圖表。在具體實作時,我們將使用MySQL

php數組二維怎麼轉一維數組 php數組二維怎麼轉一維數組 Aug 03, 2023 am 11:14 AM

php數組二維轉一維數組的方法:1、使用循環遍歷,使用循環遍歷二維數組,將每個元素添加到一維數組中;2、使用“array_merge”函數,可以將多個數字組合併為一個數組,將二維數組當作參數傳遞給“array_merge”函數,將其轉換為一維數組;3、使用“array_reduce”函數,可以將數組中的所有值通過一個回調函數來處理,並最後返回一個結果。

php怎麼判斷陣列有幾個 php怎麼判斷陣列有幾個 Aug 04, 2023 pm 05:40 PM

php判斷陣列有幾個的方法:1、使用count()函數,適用於所有類型的陣列。但要注意的是,如果傳入的參數不是數組,count()函數會傳回0;2、使用sizeof()函數,更多用於保持與其他程式語言的相容性;3、自訂函數,透過使用循環遍歷數組,每遍歷一次,計數器加1,最終得到數組的長度。自訂函數可以根據實際需求進行修改和擴展,更加靈活。

PHP數組的效能最佳化技巧探究 PHP數組的效能最佳化技巧探究 Mar 13, 2024 pm 03:03 PM

PHP數組是一種非常常見的資料結構,在開發過程中常會用到。然而,隨著資料量的增加,數組的效能可能會成為一個問題。本文將探討一些PHP數組的效能最佳化技巧,並提供具體的程式碼範例。 1.使用適當的資料結構在PHP中,除了普通數組外,還有一些其他資料結構,如SplFixedArray、SplDoublyLinkedList等,它們在特定情況下可能比普通數組效能更好

php數組鍵值對是什麼 php數組鍵值對是什麼 Aug 03, 2023 pm 02:20 PM

php數組鍵值對是一種資料結構,由一個鍵和一個對應的值組成,鍵是數組元素的標識符,而值是與鍵相關聯的資料。允許我們以鍵為標識來儲存和存取數據,透過使用鍵值對,可以更方便地操作和管理數組中的元素,使得程式開發更加靈活和高效。

PHP數組的最大長度是多少 PHP數組的最大長度是多少 Aug 10, 2023 pm 02:53 PM

PHP中數組並沒有固定的最大長度限制,數組的最大長度實際上是受到可用內存的限制,根據伺服器的可用內存來決定,如果數組需要存儲非常大量的元素,可能會超出服務器可用內存的限制並導致運行時錯誤。

php判斷數組為空的函數是什麼 php判斷數組為空的函數是什麼 Aug 03, 2023 pm 05:15 PM

php判斷數組為空的函數是「empty()」函數和「count()」函數。 1.「empty()」函數,用於判斷變數是否為空,包括判斷數組是否為空,其語法為「empty($variable)」;2、「count()」函數,用於統計數組中的元素個數,其語法為「count($array)」。

PHP數組合併的array_merge()函數如何運作? PHP數組合併的array_merge()函數如何運作? Apr 28, 2024 pm 05:03 PM

PHP的array_merge()函數將兩個或更多數字組合併為一個新陣列。建立一個新數組。遍歷要合併的陣列。將每個元素新增到新數組中,如果鍵相同,則覆蓋現有元素。傳回包含所有合併元素的新數組。

See all articles