php基礎語法

===PHP基礎語法====

【變量,常量】
   
    嚴格區分大小寫,但內置結構或關鍵字無所謂(echo)

    命名:不能以數字,空格,.來開頭,可是能夠有漢字,eg:$變量="aa";

    可變變量:$a='aa';$$a="bb";則 $aa="bb";

    引用賦值:$a="aa"; $b=&$a; 則改變$a的值,$b也變化。不一樣:存儲結構是分開的,即便unset($a),$b還在(區分C語言)

    變量類型:int str array bool object float resource null

    全局變量:全局變量自己就是靜態存儲方式,全部的全局變量都是靜態變量

            $_SESSION,  $_COOKIE,  $_POST,  $_GET,  $_REQUEST, $_FILES,$_EVN

    靜態變量:static  
             
    靜態方法:靜態方法不須要所在類被實例化就能夠直接使用。Math::Max($a,$b);(未實例化Math類直接調用靜態方法Max)

    常量:
        define("NAME",$value,[TRUE]);//若是第三個參數爲true,則不區分大小寫,默認是區分大小寫的
        預約義常量:
              PHP_OS="WINDOWS";  PHP_VERSION="版本";
              E_ERROR=1,錯誤,致使腳本終止;  E_WARNING=2,警告,腳本不終止 ;E_NOTICE=8,非關鍵性錯誤
        魔術常量:【全是返回物理路徑,即便被包含輸出,輸出的也是源頭代碼的信息,非當前包含文件的信息,和$_SERVER區分】
              __FILE__     當前文件名稱
              __CLASS__    當前類名稱
              __FUNCTION__ 當前函數名稱
              __METHOD__   當前方法名稱
              __LINE__     當前行數名稱

總結:
   
 (全局)常量:(默認常量就是全局的)存儲在(靜態)數據段

【變量】
   
全局變量:存儲在靜態數據段
   
局部變量:存儲在棧中
   
靜態變量:(無論全局/局部)存儲在靜態數據段中

【類型轉換】

    1.setType($a);//獲取變量的類型

    2.$b=(int)$a;//把$a轉換爲整形
       $b=intval($a);

    3.is_int($b);//判斷$b是否爲整形,返回bool值

    類型轉換:(int),(bool),(float),(),(string),(),(array),(),(object);
             intval(),floatval();strval()
    判斷類型:
             is_bool/int/float/string/array/object/resource/null
             is_numberic();'//判斷是否爲任何類型的數字或者數組字符串
             is_callable();//判斷是否爲有效函數名稱
【運算符】

     算數運算符:+ - * / % ++ --

     鏈接運算符: .

     賦值運算符: =, +=,-=,*=,/=,%=,.=

     比較運算符:>,<,==,===,!= <>,!==

     邏輯運算符: and,&&  ;   or,||   ;   not,!  ;  xor(邏輯異或,兩邊不一樣返回TRUE,相同返回FALSE)

     位運算符    : & ;|;^(異或,不一樣返回1);~(非運算符,1.0取反);<<左移,右邊空出的補0;>>右移左邊空出的補0

     其餘運算符:
                ?:  三目運算符    舉例:$a=$bool?$b:$c; //若$bool成立,$a=$b;不然$a=$c
                @ 忽略錯誤
                =>數組下標用
                ->調用對象值用
                ``反引號爲執行運算符
               instanceof 類型運算符  class ClassOne{} $a=new ClassOne(); var_dump(  $a instanceof ClassOne  );//返回true

【流程控制】

        1.if(){}else{}
        2.while(){};
        3.do{}while();$
        4.for($a=1;$a<10;$a++){}
        5.switch($a){
            case 1:echo 1; break;
            case 2:echo 2;break;
            default: echo "this is defaut value";
            }
        continue,break;exit   
    區別:
        continue跳過當前循環,循環還在繼續
        break 跳出當前循環,循環終止
        exit;   終止當前腳本,這行代碼後邊的代碼不執行了就
【函數】
   命名:遵循變量命名規則便可,函數不可一被重載、
   做用:函數實現告終構化編程,提升了代碼的可維護性
   
    全局變量:整個腳本中皆可使用

    局部變量:只有在函數體內使用,執行完函數自動釋放
       |---> 分爲靜態存儲類型和動態存儲類型;  static $a爲靜態變量,函數執行完後,不會被釋放

    函數內局部變量編程全局變量:1.global ; 2.$GLOBAL['']使用全局數組   

    幾種類型函數
    1.引用參數的函數:function(&$a){}//函數內對形參$a的操做,會對實參也形成影響 eg:sort()
    2.默認參數的函數:function($a=0){}//沒有參數傳入的話,默認$a=0
    3.可變參數個數的函數:function($a,$b$c,...){}
        //原理:經過fun_get_args()函數,接受全部參數並返回一個數組來使用,因此能夠有多個參數  EG: echo(),array_merge()
    4.回調函數:$fun="one"; function one(){}  當調用$fun()的時候,就是再調用one()函數,call_user_func_array()
    5.遞歸函數:function test(){ test()}//在函數中再次調用函數,但注意死循環的問題,要有執行結束跳出

【PHP 面向對象詳解】

對象的主要三個特性

對象的行爲:能夠對 對象施加那些操做,開燈,關燈就是行爲。
對象的形態:當施加那些方法是對象如何響應,顏色,尺寸,外型。
對象的表示:對象的表示就至關於身份證,具體區分在相同的行爲與狀態下有什麼不一樣。

【面向對象模型】

面向對象的概念:oop(面向對象的編程)它能是其代碼更加簡潔易於維護而且具備更強的可重性

什麼是類:類是具備相同屬性和服務的一組對象的集合好比說人,書,輪船,車都屬於類,他爲屬於該類的對象作了一個統一的抽象描述,在編程的語言中類是一個單獨的程序,它應該有一個類名包括屬性的說明和服務兩個部分。

什麼是對象:對象是系統中描述客觀事件的一個實體,他是構成系統的一個基本單位。*數據與代碼都被捆綁在一個實體當中*,一個對象由一組屬性和對這組屬性進行操做的一組行爲組成。

從抽象的角度來講,對象是問題域或實現域中某些事物的一個抽象。他反映該事物在系統中保存的信息和發揮的做用:它是一組屬性和有權對這些屬性進行操做的一個封裝體。客觀世界是由對象和對象之間的聯繫組成的。

類和對象的關係:類與對象的關係就如模具和鑄件的關係,類的實力化的結果就是對象,而對對象的抽象就是類,類描述了一組有相同特性(屬性)和相同行爲的對象。

【類與屬性和方法】

PHP中定義類語法格式:

class classname [可選屬性]{
public $property [=value];… //用public聲明一個公共標識 而後給予一個變量 變量也能夠賦值
function functionname ( args ){ //類的方法裏的成員函數
代碼} …
//類的方法(成員函數)
}

生成對象(類的實例化): $對象名=new classname( );

【使用對象的屬性】

在一個類中,能夠訪問一個特殊指針$this當在該類中經過一個操做設置或訪問該變量時,使用$this->name來引用.

【對象的生成】

定義好類後用一個new來聲明,因爲對象資料的封裝特性,對象是沒法由主程序區塊直接訪問的須經過對象來調用類中所定義的屬性和行爲函數,間接地達成存取控制類中資料的目的。

【對象和類的關係】

對象是實際存在的,佔有動態資源。
類是對象的藍圖,可能佔有靜態資源。
對象屬性佔有動態資源
類(靜態)屬性其實是有類名字空間上的"全局變量"

性能考慮:
每一個對象要單獨佔用數據空間
增長的調用層次可能消耗執行時間
方法的參數形式和傳遞方式
方法的參數能夠是基本數據類型、數組和類對象。
基本數據類型:值參傳遞
數組:值參傳遞
類對象:引用傳遞

【構造函數】

構造函數是在類中起到初始化的做用
構造函數的生成方法與其餘函數同樣只是其名稱必須是__construct().
語法格式:
function __construct(參數){
。。。。。。。。
}
範例:
代碼以下:
class Person{
public $name;
public $sex;
public $age;
function __construct($name,$sex,$age){
echo "我是構造函數<br>";
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}

輸出結果:初始化

【析構函數】

當對象脫離其做用域時(例如對象所在的函數已調用完畢),系統自動執行析構函數。應在退出前在析構函數中用釋放內存。
析構函數__destruct 析構函數沒有任何參數
範例:
代碼以下:

class person{
function _ _destruct( )
{ echo "bye bye !"; }
}
$a=new person();

【訪問類型】
public 公共的(公共修飾符) 類內部與類外部均可以訪問的
private 私有的(私有修飾符) 只能在類內部訪問
protected 受保護的(保護成員修飾符) 子類能夠訪問 類外部不能夠訪問

【oop的三個重要特性】

封裝,繼承,多態

封裝性:封裝性就是把對象的屬性和行爲結合成一個獨立的單位。

封裝一個類須要兩步 第一步是私有化一個類 第二步是用set和get 作出讀取賦值的操做
他的好處是:隱藏類的實現細節,能夠方便加入邏輯控制性,限制對屬性的不合理操做,便於修改加強代碼的可維護性。

__get與__set

通常說把類私有話更符合現實的邏輯。

預約義兩種函數來進行獲取與敷值操做。
__get 獲取值一般是域的值
__set 設置值一般是域的值
__call 調用一個對象中不存在的方法時,就會產生錯誤call()這個方法來處理這種狀況。

【靜態屬性和方法】

static關鍵字 來聲明靜態方法
static靜態變量 在類的內部生成一個靜態變量 就是可以被全部類的實力化共想 也就是說靜態成員則放到了"初始化靜態段",在類第一次被加載的時候放入的,可讓堆內存裏面的每一個對象所共享
使用方法:self::$靜態屬性、self::靜態方法
static function p(){
echo self::$country;
echo self::PI;//訪問常量
//echo $this->name;在靜態方法中只能操做靜態屬性
//self::p();
}
外部調用:類::$靜態屬性、類::靜態方法

const關鍵字:用來生成常量 常量是惟一的不能改變的 慣例常量爲大寫
const CONSTANT = 'constant value'; 生成一個常量
echo self::CONSTANT;//類內部訪問
echo ClassName::CONSTANT;//類外部訪問

繼承性

B類的對象擁有A類的所有屬性與行爲,稱做B對A類的繼承。
假如一個類從多個類中繼承了屬性與服務,這稱爲多繼承,一般咱們成爲繼承類爲子類被繼承類爲父類,在PHP中只有單繼承,但一個父類能夠被多個類繼承,可是一個子類只能有一個父類,可是容許關聯繼承,經過繼承能夠減化類的定義。
extende聲明繼承關係
語法格式:class B extends A 此範例指明 B繼承了A
類的外部訪問對子類是有效的
子類與父類的屬性與方法
子類繼承父類的全部內容,但父類中的private部分不能直接訪問
子類中新增長的屬性和方法是對父類的擴展
子類中定義的與父類同名的屬性是對父類屬性的覆蓋,同名的方法也是對父類方法的覆蓋

重寫的方法

在子類中,使用parent訪問父類中的被覆蓋的屬性和方法

parent::__construce();
parent::$name;
parent::fun();

覆蓋父類原有屬性
clone克窿對象 語法格式$c=clone $p; $c克窿的對象$p 輸出echo $c->name;

對象比較
===兩個比較運算符。
==是比較兩個對象的內容。
===是比較對象的句柄,即引用地址。

instanceof操做符用於檢測對象實力是否屬於某一個類的類型 屬於返回true 不屬於返回false
__clone()若是想在克隆後改變原對象的內容,須要在__clone()中重寫本來的屬性和方法
function __clone(){
$this->name="我是一個克隆人";
}

final表示一個類是最終版本 也就是說它不能在被子類調用

多態性

多態性是指在父類中定義的屬性或行爲被子類繼承以後,能夠具備不一樣的數據類型或表現出不一樣的行爲。這使得同一個屬性或行爲在父類及其各個子類中具備不一樣的語義。
就是說同一種方法在子類與父類中執行的結果不一樣。
代碼以下:

class A {
function info(){
echo "A INFO";
}
}
class B extends A {
function info(){
echo "B INFO";
}
}
class C extends A {
function info(){
echo "C INFO";
}
}
function printinfo($obj){
function printinfo(A $obj){
if($obj instanceof A)
$obj->info();
$obj->info();
}
}
$a=new A(); $b=new B(); $c=new C();
printinfo($a); //輸出A INFO
printinfo($b); //輸出B INFO
printinfo($c); //輸出C INFO


抽象方法和抽象類

抽象方法是做爲子類摸版使用的。
複製代碼 代碼以下:

abstract class Person{
public $name;
abstract function getInfo();
}

抽象類不能被實力話,一個抽象類中,必須有一個抽象方法。可是抽象類中能夠定義動態函數。
【接口】
當一個類繼承了一個接口以後,它要覆蓋接口的全部方法,接口只能聲明常量,接口的方法必須定義爲共有不然沒法繼承,接口能夠與多個接口間繼承
語法:
代碼以下:

interface PCI{
const TYPE="PCI";
//public $name; error
function start();
function stop();
}

接口中的方法能夠聲明爲static
代碼以下:

interface A{ function a();}
interface B{ function b();}
interface C extends A{ function c();}
class D implements B,C{
function a(){}
function b(){}
function c(){}
}

【類】
類的聲明:
代碼以下:

<?php
    權限修飾符 class 類名{ //權限修士符號:public,protected,private 或者省略3者.
      //類體;        //class 是建類關鍵字
    }             //類名必須跟在class 後面,且跟上{}.{}之間放類的成員.
  ?>
//ps:在class關鍵字前能夠加權限修飾符外,還能夠加static,abstract等關鍵字.一個類,即一對大括號之間的所有內容都要在一段代碼段中,不容許將類中的內容分割成對塊.
<?php
  class ConnDB{
    //....
?>
<?
    //...
  };
?>

成員屬性:
  在類中直接聲明的變量稱爲成員屬性/變量.其類型能夠爲php中的標量類型和複合類型,使用資源類型和空類型是無效的.
此外,成員屬性的聲明時,必需要有關鍵字來修飾:有特定意義的關鍵字:public,protected,private ;不須要特定意義:var.聲明成員屬性時,沒有必要賦初始值.

成員常量:

  以const常量修飾,例如:const PI = 3.1415926;
  常量的輸出不須要實例化,直接由類名+常量名調用便可,格式爲: 類名::常量名
ps. 特殊的訪問方法:--------"$this" 和 "::"
1) $"this" 存在於每一個成員方法當中,它是一個特殊的對象以用方法.成員方法屬於那個對象,$this應用就表明那個對象,其做用就是專門完成對象內部成員之間的訪問.
2) "::"成爲做用域操做符,使用這個操做符能夠在不建立對象的狀況下調用類中的常量,變量和方法. 其語法格式以下:

  關鍵字::變量名/常量名/方法名

  關鍵字:parent,能夠調用父類成員中的成員變量,成員方法和常量;
      self,能夠調用當前類中的靜態成員和常量;
      類名,能夠調用類中的常量,變量和方法;   
  
成員方法:

  在類中聲明的函數成爲成員方法,在一個類中能夠聲明多個函數,即對象能夠擁有多個成員方法.成員方法的聲明和函數的聲明相同,惟一特殊之處就是成員方法能夠有關鍵字對它進行修飾,從而控制其訪問權限.
類的實例化

  建立對象:

    $變量名 = new 類名稱([參數]); //類的實例化.
  訪問類成員:
    $變量名 -> 成員屬性 = 值;
構造方法和析構方法
構造方法是對象建立完成後第一個唄對象自動調用的方法.它存在每一個類的聲明當中,是一個特殊的成員方法,通常用來完成一些初始化操做.若是類中沒有構造方法,系統會默認自動生成一個沒有參數的構造方法.
  格式:
複製代碼 代碼以下:

function _construct(形參列表){
      //方法體
    };

析構方法則如構造方法相反,它是在對象被銷燬前最後一個調用的方法.它將完成一個特定的操做,如關閉文件和釋放內存.
  格式:
複製代碼 代碼以下:

function _destruct(){
      //方法體 
    };

面向對象特色:封裝性,抽象性,多態性.

封裝:
  將類中的成員屬性和方法結合成一個獨立的相同單位,而且儘量的隱藏對象的內容細節.其目的是確保類之外的部分不能隨意存取類的內部數據(成員屬性和成員方法),從而避免外部錯誤對內部數據的影響.
  類的封裝是經過關鍵字public,private,protected,static和final實現的.各關鍵字的做用請查看php相關文檔.
繼承性:
  使一個類繼承並擁有另外一個已存在的類的成員屬性和成員方法,其中被繼承的類成爲父類,繼承的類成爲子類.經過繼承可以提升代碼的重用性和可維護性.類的繼承用 extends 關鍵字.
  格式:
代碼以下:

class 子類名稱 extends 父類名稱{
      //子類方法體.
    }

經過parent::關鍵字也能夠在子類方法中調用父類的成員方法,格式以下:
  parent::父類的成員方法(參數);

覆蓋父類的方法:

  所謂的覆蓋父類的方法,也就是使用子類中的方法替換從父類中繼承的方法,也叫方法的重寫.重寫的關鍵就在與子類中建立與父類中相同的方法,g包括方法名稱,參數和返回類型.

多態性:
  多態性是指一段程序可以處理多種類型對象的能力.php多態有兩種實現方法,即經過繼承實現多態和經過接口實現多態.
經過繼承實現多態,即經過重寫繼承的成員方法來達到多態的效果.
代碼以下:


<?php
abstract class ParentClass{
abstract function printMessage();
}
class SubClassA extends ParentClass{
function printMessage(){
echo "i am message from class A";
}
}
class SubClassB extends ParentClass{
function printMessage(){
echo "i am message from class B";
}
}
function printMSG($object){
if( $object instanceof ParentClass){
$object->printMessage();
}else{
echo "error!";
}
}
$objectA=new SubClassA();
printMSG($objectA);
$objectB=new SubClassB();
printMSG($objectB);
?>

經過接口實現多態,經過定義接口,與空方法.而後類繼承接口.
代碼以下:


<?php
interface interfaceInfo{
function printMessage();
}
class ClassA implements interfaceInfo{
function printMessage(){
echo "message form class A";
}
}
class ClassB implements interfaceInfo{
function printMessage(){
echo "message form class B";
}
}
function printMSG($object){
if($object instanceof interfaceInfo){
$object -> printMessage();
}else{
echo "error !";
}
}
$objectA =new ClassA();
printMSG($objectA);
$objectB =new ClassB();
printMSG($objectB);
?>

ps. 抽象類和接口.
抽象類和接口都是不能被實例化的特殊類.他們都是可以配合面向對象多態性一塊兒使用.
抽象類:
  抽象類是一種不能實例化的類,只能做爲其餘類的父類來使用.抽象類使用abstract 關鍵字來聲明,其格式以下:
複製代碼 代碼以下:

abstract class 抽象類名{
      abstract function 成員方法(參數);//
    }

抽象類和普通類類似,包含成員變量,成員方法.二者區別在於抽象類至少要包含一個抽象方法.抽象方法沒有方法體,其功能的實現只能在子類中完成.抽象方法也使用關鍵字 abstract 來修飾.

接口:
  繼承特性簡化了對象和類的建立,加強了代碼的可重用性.但php只支持單繼承,若是想實現多重繼承,就要使用接口.
接口的聲明:經過interface 關鍵字來實現,接口中聲明的方法必須是抽象方法,接口中不能聲明變量,只能使用const 關鍵字聲明爲常量的成員屬性,而且接口中全部成員都必須具有puclic 的訪問權限.ainterface 聲明接口格式以下:
複製代碼 代碼以下:

inerface 接口名稱{
   //常量成員;//成員只能是常量.
   //抽象方法;
  }

因爲接口不能實現實例化操做,所以只能藉助子類繼承接口的形式來實現.實現的格式是:
複製代碼 代碼以下:

Class 子類名 implements 接口名1[,接口名2,接口名3,.....]{
  //子類方法體.
}

經常使用關鍵字:
  1) final:final之意爲最終的,最後的.這就覺得着經過final 關鍵字修飾的類和方法都爲最終版本.不能被繼承,也不能有子類.不能重寫,也不能被覆蓋.
  2) static: 經過static 關鍵字修飾的成員屬性和成員方法稱爲靜態屬性和靜態方法.靜態成員屬性和方法不須要被實例化就能直接使用.
   靜態屬性:它屬於類自己,而不屬於類的任何實例.它至關於存儲在類中的全局變量,能夠在任何位置經過類來訪問.訪問格式爲:
      類名稱::$靜態屬性名稱;
      若是你要在類內部的成員方法中訪問靜態屬性,那麼在靜態屬性的名稱前加上操做符: "self::" 便可.
   靜態方法:因爲其不受任何對象限制,所以能夠不經過類的實例化而直接引用類中的靜態方法.引用格式以下:
      類名稱::靜態方法名(參數);
      若是你要在類內部的成員方法中調用靜態方法,那麼在靜態方法的名稱前加上操做符: "self::" 便可.在靜態方法中只能調用靜態變量,而不能調用普通變量;而普通方法中則能夠調用靜態變量.
使用靜態成員除了不須要實例化外,另外一個做用是在對象被銷燬後,仍然保留唄修改的靜態數據,以便下次調用.
  3) clone.對象的克隆能夠經過關鍵字來實現.使用clone對象與原對象沒有任何關係,即克隆對象會從新申請一份存儲空間來存放原對象內容.格式以下:
      $克隆對象 = clone $原克隆對象名稱;
    克隆成功後,他們的n成員方法,屬性以及值徹底相等.若是要對副本從新初始化,就要用到 _clone().
     魔術方法_clone()能夠對克隆後的副本對象從新初始化.它不須要任何參數,其中自動包含$this (副本對象)和 $that (原對象) 對象的引用.
對象的比較:
  "==" 表示比較兩個對象的內容,"==="表示比較兩個對象的引用地址相等.
對象類型的檢測: instanceof 操做符能夠檢測當前對象屬於那個對象.

【面向對象---經常使用魔術方法】

以上咱們已經瞭解的經常使用魔術方法有:_construct(),_destruct(),_clone.下面咱們再接着介紹幾個經常使用魔術方法.
_get(),_set();
  以上兩個方法用於對私有成員精細複製或者獲取值的操做.
  _set()在程序運行中爲私有的成員屬性設置值,它不須要任何返回值._set()方法包括兩個不可省略的參數:變量名和變量值.這個方法不須要主動調用,可在方法錢加上prive關鍵字.
  _get():在程序運行中,在對象的外部獲取私有成員的屬性的值.他有一個參數:私有成員屬性名稱.他返回一個容許對象在外部使用的值.此方法一樣不準主動調用.

_isset(),_unset():
  isset()函數用於檢測變量是否存在.而在面向對象中能夠經過isset()函數對公有的成員屬性進行檢測,但對私有成員屬性,此函數則不起做用.所以,_isset()函數正是爲了起到此做用而建立.格式以下:
  bool _isset(string name);
  _unset()則一樣爲了刪除制定的變量和對象的私有成員屬性.格式以下:
  void _unset(string name);//
_call():
  _call()方法的做用是當程序試圖調用不存在或不可見的成員方法時,php會先調用_call()方法來存儲方法名及其參數(方法名和方法參數).其中方法參數是以數組的形式存在.
_toString()方法:
  其做用是當使用echo 或者print輸出對象時,將對象轉化爲字符串.
  若是沒有_toString()方法,直接輸出對象時將會發生致命錯誤.
  輸出對象時應注意的是,echo 或print 語句後面直接跟要輸出的對象,中間不要加多餘的字符,不然_toSting()將不會被執行.
_autoload()方法:
  將一個獨立的,完整的類保存到一個php頁中,而且文件名和類名保持一致,這是每一個開發人員都須要養成的良好習慣.這樣下次在使用的時候就可以輕鬆的找到它.但有一種狀況:若是要在一個頁面中引進不少的類,就須要使用include_once()函數或者require_once()函數一個個地引入.php5中引入_autoload()方法能夠自動實例化須要使用的類.當一個類還沒實例化時,_autoload()會自動到指定的路徑下面自動查找和類名相同的文件.找到則繼續執行,不然報錯.
代碼以下:


<?php
  function _autoload($class_name){
    $class_path = $class_name.'.class.php';
    if(file_exists($class_path)){
      include_once($class_path);
    }else{
      echo '類不存在或者類路徑錯誤';
    }
}
  $class = new Class(); //將會自動加載.
  echo $class; //輸出類內容.如自定義了_toString()方法;則會輸出_toString()中定義的內容.
?>


[PHP經常使用函數總結]

數學函數

【1.abs(): 求絕對值】

$abs = abs(-4.2); //4.2 數字絕對值數字

【2.ceil(): 進一法取整】

echo ceil(9.999); // 10 浮點數進一取整

【3.floor(): 捨去法取整】

    echo floor(9.999); // 9 浮點數直接捨去小數部分

【4.fmod(): 浮點數取餘】

$x = 5.7;
$y = 1.3; // 兩個浮點數,x>y 浮點餘數
$r = fmod($x, $y);
// $r equals 0.5, because 4 * 1.3 + 0.5 = 5.7

【5.pow(): 返回數的n次方】

    echo pow(-1, 20); // 1 基礎數|n次方乘方值

【6.round(): 浮點數四捨五入】

    echo round(1.95583, 2); // 1.96, 一個數值|保留小數點後多少位,默認爲0 舍入後的結果

【7.sqrt(): 求平方根】

    echo sqrt(9); //3 被開方的數平方根

【8.max(): 求最大值】

    echo max(1, 3, 5, 6, 7); // 7

多個數字或數組 返回其中的最大值

    echo max(array(2, 4, 5)); // 5

【9.min(): 求最小值】

輸入: 多個數字或數組

輸出: 返回其中的最小值

【10.mt_rand(): 更好的隨機數】

輸入: 最小|最大, 輸出: 隨機數隨機返回範圍內的值

    echo mt_rand(0,9);//n
【11.rand(): 隨機數 輸入: 最小|最大, 輸出: 隨機數隨機返回範圍內的值】

【12.pi(): 獲取圓周率值】

去空格或或其餘字符:

【13.trim(): 刪除字符串兩端的空格或其餘預約義字符】
    
$str = "\r\nHello World!\r\n";
echo trim($str);

輸入: 目標字符串 返回值: 清除後的字符串

【14.rtrim(): 刪除字符串右邊的空格或其餘預約義字符】

    
$str = "Hello World!\n\n";
echo rtrim($str);

【15.chop(): rtrim()的別名】

【16.ltrim(): 刪除字符串左邊的空格或其餘預約義字符】


$str = "\r\nHello World!";
echo ltrim($str);

【17.dirname(): 返回路徑中的目錄部分】

    echo dirname("c:/testweb/home.php");  //c:/testweb
輸入: 一個包含路徑的字符串 返回值: 返回文件路徑的目錄部分

字符串生成與轉化:  

【18.str_pad(): 把字符串填充爲指定的長度】
    
$str = "Hello World";
echo str_pad($str,20,".");

輸入: 要填充的字符串|新字符串的長度|供填充使用的字符串, 默認是空白

輸出: 完成後的字符串

【19.str_repeat(): 重複使用指定字符串】

    echo str_repeat(".",13); // 要重複的字符串|字符串將被重複的次數13個點
【20.str_split(): 把字符串分割到數組中】

print_r(str_split("Hello"));
輸入: 要分割的字符串|每一個數組元素的長度,默認1

輸出: 拆分後的字符串數組

【21.strrev(): 反轉字符串】

    echo strrev("Hello World!"); // !dlroW olleH
輸出: 目標字符串顛倒順序後的字符串

【22.wordwrap(): 按照指定長度對字符串進行折行處理】
    
$str = "An example on a long word is:
Supercalifragulistic";
echo wordwrap($str,15);

輸入: 目標字符串|最大寬數

輸出: 折行後的新字符串

【23.str_shuffle(): 隨機地打亂字符串中全部字符】

    echo str_shuffle("Hello World");
輸入: 目標字符串順序 輸出: 打亂後的字符串

【24.parse_str(): 將字符串解析成變量】

    
parse_str("id=23&name=John%20Adams", $myArray);
print_r($myArray);

輸入: 要解析的字符串|存儲變量的數組名稱

輸出: 返回Array( [id] => 23 [name] => John Adams)

【25.number_format(): 經過千位分組來格式化數字 輸入: 要格式化的數字|規定多少個小數|規定用做小數點的字符 串|規定用做千位分隔符的字符串】

輸出: 1,000,000 1,000,000.00 1.000.000,00

大小寫轉換:

【26.strtolower(): 字符串轉爲小寫】

    echo strtolower("Hello WORLD!");
目標字符串 小寫字符串

【27.strtoupper(): 字符串轉爲大寫】

    echo strtoupper("Hello WORLD!");
輸出: 大寫字符串

【28.ucfirst(): 字符串首字母大寫】

    echo ucfirst("hello world"); // Hello world
【29.ucwords(): 字符串每一個單詞首字符轉爲大寫】

    echo ucwords("hello world"); // Hello World
html標籤關聯:

【30.htmlentities(): 把字符轉爲HTML實體】
    
$str = "John & 'Adams'";
echo htmlentities($str, ENT_COMPAT); // John & 'Adams'

【31.htmlspecialchars(): 預約義字符轉html編碼】

【32.nl2br(): \n轉義爲<br>標籤】

    echo nl2br("One line.\nAnother line.");
輸出: 處理後的字符串

【33.strip_tags(): 剝去 HTML、XML 以及 PHP 的標籤】

    echo strip_tags("Hello <b>world!</b>");  
【34.addcslashes():在指定的字符前添加反斜線轉義字符串中字符】

    
$str = "Hello, my name is John Adams.";
echo $str;
echo addcslashes($str,'m');

輸入: 目標字符串|指定的特定字符或字符範圍

【35.stripcslashes(): 刪除由addcslashes()添加的反斜線】

    echo stripcslashes("Hello, \my na\me is Kai Ji\m.");
    // 目標字符串 Hello, my name is Kai Jim.
【36.addslashes(): 指定預約義字符前添加反斜線】

    $str = "Who's John Adams?";
echo addslashes($str);
輸出: 把目標串中的' " \和null進行轉義處理

【37.stripslashes(): 刪除由addslashes()添加的轉義字符】

    echo stripslashes("Who\'s John Adams?"); // 清除轉義符號Who's John Adams?
【38.quotemeta(): 在字符串中某些預約義的字符前添加反斜線】
    
$str = "Hello world. (can you hear me?)";
echo quotemeta($str);
 // Hello world\. \(can you hear me\?\)

【39.chr(): 從指定的 ASCII 值返回字符】

    echo chr(052); // ASCII 值返回對應的字符
【40.ord(): 返回字符串第一個字符的ASCII值】

    echo ord("hello"); 字符串第一個字符的 ASCII 值
字符串比較:

【41.strcasecmp(): 不區分大小寫比較兩字符串】

    echo strcasecmp("Hello world!","HELLO WORLD!");
輸入: 兩個目標字符串 輸出: 大1|等0|小 -1

【42.strcmp(): 區分大小寫比較兩字符串】

【43.strncmp(): 比較字符串前n個字符,區分大小寫】

調用: int strncmp ( string $str1 , string $str2 , int $len)  

【44.strncasecmp(): 比較字符串前n個字符,不區分大小寫】

調用: int strncasecmp ( string $str1 , string $str2 , int $len )

【45.strnatcmp(): 天然順序法比較字符串長度,區分大小寫】

調用: int strnatcmp ( string $str1 , string $str2 )

輸入: 目標字符串 

【46.strnatcasecmp(): 天然順序法比較字符串長度, 不區分大小寫】

調用: int strnatcasecmp ( string $str1 , string $str2 )

字符串切割與拼接:

【47.chunk_split():將字符串分紅小塊】

調用: str chunk_split(str $body[,int $len[,str $end]])

輸入: $body目標字串, $len長度, $str插入結束符 輸出: 分割後的字符串

【48.strtok(): 切開字符串】

調用: str strtok(str $str,str $token)

目標字符串$str,以$token爲標誌切割返回切割後的字符串

【49.explode(): 使用一個字符串爲標誌分割另外一個字符串】

調用: array explode(str $sep,str $str[,int $limit])

輸入: $sep爲分割符,$str目標字符串,$limit返回數組最多包含元素數 輸出: 字符串被分割後造成的數組

【50.implode(): 同join,將數組值用預訂字符鏈接成字符串】

調用: string implode ( string $glue , array $pieces )

$glue默認, 用''則直接相連

【51.substr(): 截取字符串】

調用: string substr ( string $string , int $start [, int $length ] )

字符串查找替換:

【52.str_replace(): 字符串替換操做,區分大小寫】

調用mix str_replace(mix $search,mix $replace, mix $subject[,int &$num])

輸入: $search查找的字符串,$replace替換的字符串,$subject被查找字串, &$num 輸出: 返回替換後的結果

【53.str_ireplace() 字符串替換操做,不區分大小寫】

調用: mix str_ireplace ( mix $search , mix $replace , mix $subject [, int &$count ] )

輸入: $search查找的字符串,$replace替換的字符串,$subject被查找字串,&$num 輸出: 返回替換後的結果

【54.substr_count(): 統計一個字符串,在另外一個字符串中出現次數】

調用: int substr_count ( string $haystack , string $needle[, int $offset = 0 [, int $length ]] )

【55.substr_replace(): 替換字符串中某串爲另外一個字符串】

調用: mixed substr_replace ( mixed $string, string $replacement,int $start [, int $length ] )

【56.similar_text(): 返回兩字符串相同字符的數量】

調用: int similar_text(str $str1,str $str2)
輸入: 兩個比較的字符串

輸出: 整形,相同字符數量

【57.strrchr(): 返回一個字符串在另外一個字符串中最後一次出現位置開始到末尾的字符串】

調用: string strrchr ( string $haystack , mixed $needle )

【58.strstr(): 返回一個字符串在另外一個字符串中開始位置到結束的字符串】

調用: string strstr ( string $str, string $needle , bool $before_needle )   

【59.strchr(): strstr()的別名,返回一個字符串在另外一個字符串中首次出現的位置開始到末尾的字符串】

調用: string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )   

【60.stristr(): 返回一個字符串在另外一個字符串中開始位置到結束的字符串,不區分大小寫】

調用:string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

【61.strtr(): 轉換字符串中的某些字符】

調用: string strtr ( string $str , string $from , string $to )

【62.strpos(): 尋找字符串中某字符最早出現的位置】

調用: int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

【63.stripos(): 尋找字符串中某字符最早出現的位置,不區分大小寫 調用: int stripos ( string $haystack , string $needle [, int $offset ] )】

【64.strrpos(): 尋找某字符串中某字符最後出現的位置】

調用: int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

【65.strripos(): 尋找某字符串中某字符最後出現的位置,不區分大小寫】

調用: int strripos ( string $haystack , string $needle [, int $offset ] )

【66.strspn(): 返回字符串中首次符合mask的子字符串長度 調用: int strspn ( string $str1 , string $str2 [, int $start [, int $length ]] )】

【67.strcspn(): 返回字符串中不符合mask的字符串的長度】

調用: int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )

輸入: $str1被查詢,$str2查詢字符串,$start開始查詢的字符,$length是查詢長度 輸出: 返回從開始到第幾個字符

字符串統計:

【68.str_word_count(): 統計字符串含有的單詞數】

調用: mix str_word_count(str $str,[])

輸入: 目標字符串 輸出: 統計處的數量

【69.strlen(): 統計字符串長度int strlen(str $str)】

輸入: 目標字符串 輸出:整型長度

【70.count_chars(): 統計字符串中全部字母出現次數(0..255) 調用: mixed count_chars ( string $string [, int $mode ] )】

字符串編碼:

【71.md5(): 字符串md5編碼】

$str = "Hello";
echo md5($str);

數組函數

數組建立:

【72.array(): 生成一個數組】
    
$a=array("Dog","Cat","Horse");
print_r($a);


數組值或,鍵=>值一個數組型變量

【73.array_combine(): 生成一個數組,用一個數組的值 做爲鍵名,另外一個數組值做爲值】

    $a1=array("a","b","c","d");
    $a2=array("Cat","Dog","Horse","Cow");
    print_r(array_combine($a1,$a2));
$a1爲提供鍵,$a2提供值合成後的數組

【74.range(): 建立並返回一個包含指定範圍的元素的數組。】

    $number = range(0,50,10);
    print_r ($number);
輸入: 0是最小值,50是最大值,10是步長 輸出: 合成後的數組

【75.compact(): 建立一個由參數所帶變量組成的數組】
    
$firstname = "Peter";
$lastname = "Griffin";
$age = "38";
$result = compact("firstname", "lastname",
"age");
print_r($result);

變量或數組

返回由變量名爲鍵,變量值爲值的數組,變量也能夠爲多維數組.會遞歸處理

【76.array_fill(): 用給定的填充(值生成)數組】

    
$a=array_fill(2,3,"Dog");
print_r($a);

2是鍵,3是填充的數量,'Dog'爲填充內容返回完成的數組

數組合並和拆分:    

【77.array_chunk(): 把一個數組分割爲新的數組塊】
    
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow");
print_r(array_chunk($a,2));

一個數組分割後的多維數組,規定每一個新數組包含2個元素

【78.array_merge(): 把兩個或多個數組合併爲一個數組。】

$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));

輸入: 兩個數組 輸出: 返回完成後的數組

【79.array_slice(): 在數組中根據條件取出一段值,並返回。】
    
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2));

輸入: 一個數組 輸出: 1爲從'Cat'開始,2爲返回兩個元素

數組比較:

【80.array_diff(): 返回兩個數組的差集數組】
    
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
 print_r(array_diff($a1,$a2)); //返回'Cat'

輸入: 兩個或多個數組 輸出: $a1與$a2的不一樣之處

【81.array_intersect(): 返回兩個或多個數組的交集數組 輸出: 返回'Dog'和'Horse',$a1與$a2的相同之處】

數組查找替換:     

【82.array_search(): 在數組中查找一個值,返回一個鍵,沒有返回返回假】
    
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_search("Dog",$a);

輸入: 一個數組 輸出: 成功返回鍵名,失敗返回false

【83.array_splice(): 把數組中一部分刪除用其餘值替代】
    
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
$a2=array(0=>"Tiger",1=>"Lion");
array_splice($a1,0,2,$a2);
print_r($a1);

輸入: 一個或多個數組 輸出: $a1被移除的部分由$a2補全

【84.array_sum(): 返回數組中全部值的總和】

$a=array(0=>"5",1=>"15",2=>"25");
echo array_sum($a);

輸入: 一個數組 輸出: 返回和

【85.in_array(): 在數組中搜索給定的值,區分大小寫】
    
$people = array("Peter", "Joe", "Glenn", "Cleveland");
if (in_array("Glenn",$people) {
echo "Match found";
}
else{
echo "Match not found";
}

輸入: 須要搜索的值|數組 輸出: true/false

【86.array_key_exists(): 判斷某個數組中是否存在指定的 key】

輸入: 須要搜索的鍵名|數組

數組指針操做:

【87.key(): 返回數組內部指針當前指向元素的鍵名】    

【88.current(): 返回數組中的當前元素(單元).】    

【89.next(): 把指向當前元素的指針移動到下一個元素的位置,並返回當前元素的值】    

【90.prev(): 把指向當前元素的指針移動到上一個元素的位置,並返回當前元素的值】    

【91.end(): 將數組內部指針指向最後一個元素,並返回該元素的值(若是成功)】    

【92.reset(): 把數組的內部指針指向第一個元素,並返回這個元素的值】    

【93.list(): 用數組中的元素爲一組變量賦值】
    
$my_array=array("Dog","Cat","Horse");
list($a, $b, $c) = $my_array;


輸入: $a, $b, $c爲須要賦值的變量 輸出: 變量分別匹配數組中的值

【94.array_shift(): 刪除數組中的第一個元素,並返回被刪除元素的值】
    
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_shift($a);
print_r ($a);

【95.array_unshift(): 在數組開頭插入一個或多個元素】

$a=array("a"=>"Cat","b"=>"Dog");
array_unshift($a,"Horse");
print_r($a);

【96.array_push(): 向數組最後壓入一個或多個元素】
    
$a=array("Dog","Cat");
array_push($a,"Horse","Bird");
print_r($a);

輸入: 目標數組|須要壓入的值 返回值: 返回新的數組

【97.array_pop(): 取得(刪除)數組中的最後一個元素】
    
$a=array("Dog","Cat","Horse");
array_pop($a);
print_r($a);

輸入: $a爲目標數組 輸出: 返回數組剩餘元素

數組鍵值操做:     

【98.shuffle(): 將數組打亂,保留鍵名】
    
$my_array = array("a" => "Dog", "b" => "Cat");
shuffle($my_array);
print_r($my_array);

輸入: 一個或多個數組 輸出: 順序打亂後的數組

【99.count(): 計算數組中的單元數目或對象中的屬性個數】

    
$people = array("Peter", "Joe", "Glenn",
"Cleveland");
$result = count($people);
echo $result;


輸入: 數組 輸出: 輸出元素個數

【100.array_flip(): 返回一個鍵值反轉後的數組】
    
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r(array_flip($a));


輸出: 返回完成後的數組 101.array_keys(): 返回數組全部的鍵,組成一個數組

    
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a));

輸出: 返回由鍵名組成的數組

【102.array_values(): 返回數組中全部值,組成一個數組】

輸出: 返回由鍵值組成的數組

【103.array_reverse(): 返回一個元素順序相反的數組 元素順序相反的一個數組,鍵名和鍵值依然匹配】

【104.array_count_values(): 統計數組中全部的值出現的次數】

    
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));

輸出: 返回數組原鍵值爲新鍵名,次數爲新鍵值

【105.array_rand(): 從數組中隨機抽取一個或多個元素,注意是鍵名!!!】
    
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
print_r(array_rand($a,1));

$a爲目標數組, 1爲抽取第幾個元素的鍵名返回第1個元素的鍵名b

【106.each(): 返回數組中當前的鍵/值對並將數組指針向前移動一步 調用array each ( array &$array )】

在執行 each() 以後,數組指針將停留在數組中的下一個單元或者當碰到數組結尾時停留在最後一個單元。若是要再用 each 遍歷數組,必須使用 reset()。

返回值: 數組中當前指針位置的鍵/值對並向前移動數組指針。鍵值對被返回爲四個單元的數組,鍵名爲0,1,key和 value。單元 0 和 key 包含有數組單元的鍵名,1 和 value 包含有數據。 若是內部指針越過了數組的末端,則 each() 返回 FALSE。

【107.array_unique(): 刪除重複值,返回剩餘數組】
    
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");
print_r(array_unique($a));

輸入: 數組 輸入: 返回無重複值數組,鍵名不變

數組排序:   

【108.sort(): 按升序對給定數組的值排序,不保留鍵名】

$my_array = array("a" => "Dog", "b" => "Cat",
"c" => "Horse");
sort($my_array);
print_r($my_array);

輸出: true/false  
【109.rsort(): 對數組逆向排序,不保留鍵名】  
【110.asort(): 對數組排序,保持索引關係】   
【111.arsort(): 對數組逆向排序,保持索引關】 
【112.ksort(): 系按鍵名對數組排序】 
【113.krsort(): 將數組按照鍵逆向排序】
【114.natsort(): 用天然順序算法對數組中的元素排序】    
【115.natcasesort(): 天然排序,不區分大小寫】      

文件系統函數

【116.fopen(): 打開文件或者 URL】

    $handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
調用: resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )

返回值: 若是打開失敗,本函數返回 FALSE

【117.fclose(): 關閉一個已打開的文件指針】
    
$handle = fopen('somefile.txt', 'r');
fclose($handle);
bool fclose(resource handle)


輸出: 若是成功則返回 TRUE,失敗則返回 FALSE

文件屬性

【118.file_exists(): 檢查文件或目錄是否存在】
    
$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
echo "exists";
} else {
echo "does not exist";
}

調用: bool file_exists ( string filename ) 輸入: 指定的文件或目錄 輸出: 存在則返回 TRUE,不然返回 FALSE

【119.filesize(): 取得文件大小】
    
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) .'bytes';

調用: int filesize ( string $filename )

輸出: 返回文件大小的字節數,若是出錯返回 FALSE 並生成一條 E_WARNING 級的錯誤

【120.is_readable(): 判斷給定文件是否可讀】
    
$filename = 'test.txt';
if (is_readable($filename)) {
echo '可讀';
} else {
echo '不可讀';
}

調用: bool is_readable ( string $filename ) 輸出: 若是由 filename指定的文件或目錄存在而且可讀則返回 TRUE

【121.is_writable(): 判斷給定文件是否可寫】
    
$filename = 'test.txt';
if (is_writable($filename)) {
echo '可寫';
} else {
echo '不可寫';
}

調用: bool is_writable ( string $filename ) filename 參數 能夠是一個容許進行是否可寫檢查的目錄名

輸出: 若是文件存在而且可寫則返回 TRUE。

【122.is_executable(): 判斷給定文件是否可執行】
    
$file = 'setup.exe';
if (is_executable($file)) {
echo '可執行';
} else {
echo '不可執行';
}

調用: bool is_executable ( string $filename ) 輸出: 若是文件存在且可執行則返回 TRUE

【123.filectime(): 獲取文件的建立時間】
    
$filename = 'somefile.txt';
echo filectime($filename);

調用: int filectime ( string $filename ) 輸出: 時間以 Unix 時間戳的方式返回,若是出錯則返回FALSE

【124.filemtime(): 獲取文件的修改時間】

$filename = 'somefile.txt';
echo filemtime($filename);

    int filemtime ( string $filename )
輸出: 返回文件上次被修改的時間,出錯時返回 FALSE。時間以 Unix時間戳的方式返回

【125.fileatime(): 獲取文件的上次訪問時間】

    
$filename = 'somefile.txt';
echo fileatime($filename);

調用: int fileatime (string $filename)

輸出: 返回文件上次被訪問的時間, 若是出錯則返回FALSE. 時間以Unix時間戳的方式返回.

【126.stat(): 獲取文件大部分屬性值】
    
$filename = 'somefile.txt';
var_dump(fileatime($filename));

調用: array stat (string $filename 輸出: 返回由 filename 指定的文件的統計信息

文件操做

【127.fwrite(): 寫入文件】
    
$filename = 'test.txt';
$somecontent = "添加這些文字到文件\n";
$handle = fopen($filename, 'a');
fwrite($handle, $somecontent);
fclose($handle);

調用: int fwrite ( resource handle, string string [, int length] )

輸出: 把 string 的內容寫入 文件指針 handle 處。若是指定了 length,當寫入了length個字節或者寫完了string之後,寫入就會中止, 視乎先碰到哪一種狀況

【128.fputs(): 同上】    

【129.fread(): 讀取文件】
    
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
 fclose($handle);

調用: string fread ( int handle, int length ) 從文件指針handle,讀取最多 length 個字節

【130.feof(): 檢測文件指針是否到了文件結束的位置】

    
$file = @fopen("no_such_file", "r");
while (!feof($file)) {
}
fclose($file);

調用: bool feof ( resource handle ) 輸出: 若是文件指針到了 EOF 或者出錯時則返回TRUE,不然返回一個錯誤(包括 socket 超時),其它狀況則返回 FALSE

【131.fgets(): 從文件指針中讀取一行】

    
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}

調用: string fgets ( int handle [, int length] ) 輸出: 從handle指向的文件中讀取一行並返回長度最多爲length-1字節的字符串.碰到換行符(包括在返回值中)、EOF 或者已經讀取了length -1字節後中止(看先碰到那一種狀況). 若是沒有指定 length,則默認爲1K, 或者說 1024 字節.

【132.fgetc(): 從文件指針中讀取字符】
    
$fp = fopen('somefile.txt', 'r');
if (!$fp) {
echo 'Could not open file somefile.txt';
}
while (false !== ($char = fgetc($fp))) {
echo "$char\n";
}

輸入: string fgetc ( resource $handle ) 輸出: 返回一個包含有一個字符的字符串,該字符從 handle指向的文件中獲得. 碰到 EOF 則返回 FALSE.

【133.file(): 把整個文件讀入一個數組中】

    
$lines = file('http://www.example.com/');
// 在數組中循環,顯示 HTML 的源文件並加上行號。
 
 foreach ($lines as $line_num => $line) {
 echo "Line #<b>{$line_num}</b> : " .
 htmlspecialchars($line) . "<br />\n";
 }
// 另外一個例子將 web 頁面讀入字符串。參見 file_get_contents()。
 
 $html = implode('', file('http://www.example.com/'));

調用: array file ( string $filename [, int $use_include_path [, resource $context ]] )

輸出: 數組中的每一個單元都是文件中相應的一行,包括換行符在內。若是失敗 file() 返回 FALSE

【134.readfile(): 輸出一個文件  調用: int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )】

輸出: 讀入一個文件並寫入到輸出緩衝。返回從文件中讀入的字節數。若是出錯返回 FALSE

【135.file_get_contents(): 將整個文件讀入一個字符串】

    echo file_get_contents('http://www.baidu.com');
調用: string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )   136.file_put_contents():將一個字符串寫入文件

    file_put_contents('1.txt','aa');
調用: int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )

輸出: 該函數將返回寫入到文件內數據的字節數

【137.ftell(): 返回文件指針讀/寫的位置】
    
$fp=fopen('tx.txt','r');
fseek($fp,10);
echo ftell($fp);
fread($fp,4);
echo ftell($fp);

調用: int ftell ( resource $handle ) 輸出: 返回由 handle 指定的文件指針的位置,也就是文件流中的偏移量

【138.fseek(): 在文件指針中定位】
    
$fp=fopen('tx.txt','r');
fseek($fp,10);
echo ftell($fp);
fread($fp,4);
echo ftell($fp);

調用: int fseek ( resource $handle , int $offset [, int $whence ] ) 輸出: 成功則返回 0;不然返回 -1

【139.rewind(): 倒回文件指針的位置】
    
$fp=fopen('tx.txt','r');
fseek($fp,3);
echo ftell($fp);
fread($fp,4);
rewind($fp);
echo ftell($fp);

調用: bool rewind ( resource $handle ) 返回值: 若是成功則返回 TRUE,失敗則返回 FALSE

【140.flock(): 輕便的執行文件鎖定】
    
$fp=fopen('tx.txt','r');
flock($fp, LOCK_SH);//共享鎖
//flock($fp, LOCK_EX);//獨立鎖,寫文件時用它打開
//flock($fp, LOCK_NB);//附加鎖
flock($fp, LOCK_UN);//釋放鎖
fclose($fp);

調用: bool flock ( int $handle , int $operation [, int &$wouldblock ] ) 輸出: 若是成功則返回 TRUE,失敗則返回 FALSE

目錄

【141.basename(): 返回路徑中的文件名部分】
    
path = "/home/httpd/html/index.php";
$file = basename($path);
$file = basename($path,".php");

調用: string basename ( string $path [, string $suffix ]) 輸出: 給出一個包含有指向一個文件的全路徑的字符串,本函數返回基本的文件名。若是文件名是以 suffix 結 束的,那這一部分也會被去掉

【142.dirname(): 返回路徑中的目錄部分】
    
$path = "/etc/passwd";
$file = dirname($path);

調用: string dirname ( string $path ) 輸出: 給出一個包含有指向一個文件的全路徑的字符串,本函數返回去掉文件名後的目錄名

【143.pathinfo(): 返回文件路徑的信息】
    
echo '<pre>';
print_r(pathinfo("/www/htdocs/index.html"));
echo '</pre>';

調用: mixed pathinfo ( string $path [, int $options ] ) 返回一個關聯數組包含有 path 的信息

【144.opendir(): 打開目錄句柄】
    
$fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp);
closedir($fp);

調用: resource opendir ( string $path [, resource $context ] ) 返回值: 若是成功則返回目錄句柄的 resource,失敗則返回FALSE

【145.readdir(): 從目錄句柄中讀取條目】

$fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp);
closedir($fp);

調用: string readdir ( resource $dir_handle ) 返回值: 返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回

【146.closedir(): 關閉目錄句柄】

$fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp);
closedir($fp);

調用: void closedir ( resource $dir_handle ) 關閉由 dir_handle 指定的目錄流。流必須以前被opendir() 所打開 【147.rewinddir() : 倒回目錄句柄】

$fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp).'<br />';
echo readdir($fp).'<br />';
echo readdir($fp).'<br />';
rewinddir($fp);
echo readdir($fp).'<br />';
closedir($fp);

調用: void rewinddir ( resource $dir_handle ) 輸出: 將 dir_handle 指定的目錄流重置到目錄的開頭
【148.mkdir(): 新建目錄】

    mkdir('123');
調用: bool mkdir ( string $pathname [, int $mode [, bool $recursive [, resource $context ]]] ) 輸出: 嘗試新建一個由 pathname 指定的目錄

【149.rmdir(): 刪除目錄】

    rmdir('123');
調用: bool rmdir ( string $dirname ) 輸出: 嘗試刪除 dirname 所指定的目錄。目錄必須是空的,並且要有相應的權限。若是成功則返回TRUE,失敗則返回 FALSE

【150.unlink(): 刪除文件】

unlink('123/1.txt');
rmdir('123');

調用: bool unlink ( string $filename ) 輸出: 刪除 filename 。和 Unix C 的 unlink() 函數類似。若是成功則返回 TRUE,失敗則返回 FALSE

【151.copy(): 拷貝文件】

    copy('index.php','index.php.bak');
調用: bool copy ( string $source , string $dest ) 輸出: 將文件從 source 拷貝到 dest. 若是成功則返回TRUE,失敗則返回 FALSE

【152.rename(): 重命名一個文件或目錄】

    rename('tx.txt','txt.txt');
調用: bool rename ( string $oldname , string $newname [, resource $context ] ) 輸出: 若是成功則返回 TRUE,失敗則返回 FALSE

文件的上傳與下載

【153.is_uploaded_file():判斷文件是不是經過 HTTP POST上傳的】
    
if(is_uploaded_file($_FILES['bus']['tmp_name'])){
if( move_uploaded_file($_FILES['bus']['tmp_name'],
$NewPath) ){
echo '上傳成功<br /><img src="'.$NewPath.'">';
}else{
exit('失敗');
}
}else{
exit('不是上傳文件');
}

調用: bool is_uploaded_file ( string $filename )  

【154.move_uploaded_file(): 將上傳的文件移動到新位置】
    
if(is_uploaded_file($_FILES['bus']['tmp_name'])){
if( move_uploaded_file($_FILES['bus']['tmp_name'],
$NewPath) ){
echo '上傳成功<br /><img src="'.$NewPath.'">';
}else{
exit('失敗');
}
}else{
exit('不是上傳文件');
}

調用: bool move_uploaded_file ( string $filename , string

時間函數

【155.time(): 返回當前的 Unix 時間戳time(); 調用: int time ( void ) 輸出: 返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數】

【156.mktime(): 取得一個日期的 Unix 時間戳】

    mktime(0, 0, 0, 4, 25, 2012);
調用: int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )   156.date(): 格式化一個本地時間/日期

date('Y年m月d日 H:i:s');
調用: string date ( string $format [, int $timestamp ] )

輸出: 2016年09月10日 20:45:54

【157.checkdate(): 驗證一個格里高裏日期 調用: bool checkdate ( int $month , int $day , int $year) 輸出: 若是給出的日期有效則返回 TRUE,不然返回 FALSE】
    
if(checkdate(6,31,2012)){
echo '成立';
}else{
echo '不成立';
}

【158.date_default_timezone_set(): 設定用於一個腳本中全部日期時間函數的默認時區】

    date_default_timezone_set('PRC');
調用: bool date_default_timezone_set ( string $timezone_identifier)

返回值: 若是 timezone_identifier 參數無效則返回 FALSE,不然返回 TRUE。

【159.getdate(): 取得日期/時間信息 調用: array getdate ([ int $timestamp ] )】

輸出: 返回一個根據timestamp得出的包含有日期信息的關聯數組。若是沒有給出時間戳則認爲是當前本地時間
    
$t=getdate();
var_dump($t);

【160.strtotime(): 將任何英文文本的日期時間描述解析爲 Unix 時間戳】

echo strtotime("now");
int strtotime ( string $time [, int $now ] )  
echo strtotime("10 September 2000");
echo strtotime("+1 day");
echo strtotime("+1 week");
echo strtotime("+1 week 2 days 4 hours 2 seconds");
echo strtotime("next Thursday");
echo strtotime("last Monday");

【161.microtime(): 返回當前 Unix 時間戳和微秒數 調用: mixed microtime ([ bool $get_as_float ] )】
    
$start=microtime(true);
sleep(3);
$stop=microtime(true);
echo $stop-$start;

其餘經常使用:

【162.intval(): 獲取變量的整數值 調用: int intval ( mixed $var [, int $base = 10 ] ) 經過使用指定的進制 base 轉換(默認是十進制),返回變量 var 的 integer 數值。 intval() 不能用於 object,不然會產生 E_NOTICE 錯誤並返回 1。】

var: 要轉換成 integer 的數量值

base: 轉化所使用的進制

返回值: 成功時返回 var 的 integer 值,失敗時返回 0。 空的 array 返回 0,非空的 array 返回 1。

PDO類的相關函數
prepare()
execute()
fetch()

    
<?php
$driver = 'mysql';
$database = "dbname=CODINGGROUND";
$dsn = "$driver:host=localhost;unix_socket=/home/cg/mysql/mysql.sock;$database";
 
$username = 'root';
$password = 'root';
 
try {
 $conn = new PDO($dsn, $username, $password);
 echo "<h2>Database CODINGGROUND Connected<h2>";
}catch(PDOException $e){
 echo "<h1>" . $e->getMessage() . "</h1>";
}
$sql = 'SELECT * FROM users';
$stmt = $conn->prepare($sql);
$stmt->execute();
 
echo "<table style='width:100%'>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
 echo "<tr>";
 foreach($row as $value)
 {
 echo sprintf("<td>%s</td>", $value);
 }
 echo "</tr>";
}
echo "</table>";
?>


php

相關文章
相關標籤/搜索