php簡明學習教程

1.變量

<?php
        //變量聲明(php變量無需單首創建,變量會在第一次賦值時建立)
        $a = 1;
        
        //弱類型(php變量會根據其值自動轉換爲相應的數據類型)
        $a = "a";
        $A = 2.0;
        
        //命名規則(大小寫敏感,建議採用小駝峯方式並增長三字節的類型前綴)
        $strName = "張偉佩";
        $intAge = 24;
        
        //做用域 
        function sayHi(){
            $strLocal = "小明";
            echo $strName." say hi";  // say hi
            echo $strLocal." say hi"; // 小明 say hi
            //Global做用域只能在函數外進行訪問,若在函數內訪問能夠經過如下兩種方式
            //1.在變量前加global關鍵字
            global $strName;
            echo $strName." say hi";  // 張偉佩 say hi
            //2.經過數組$GLOBALS[index],該數組已鍵值對形式存放了全部全局變量
            echo $GLOBALS['intAge'];  //24
        }
        sayHi();
   ?>

2.運算符

  • 常規運算符php

    = + - * / % += *= ++ --
  • 字符加.數組

<?php
        //字符鏈接符
        $str1 = "hello";
        echo $str1." world"; //hello world
        //a.=b 即 a = a.b
        $str2 = " world";
        $str1.=$str2;   //$str1 = $str1.$str2;
        echo $str1; //hello world
    ?>
  • 比較運算符
<?php
        $a = "1";
        $b = 1;
        //「==」 判斷兩個變量數值是否相等 
        var_dump($a == $b);  //bool(true)
        //「===」判斷兩個變量數值和類型是否都一致
        var_dump($a === $b); //bool(false)
        
        //因爲php變量具備弱類型,兩變量若類型不一樣,比較時具備必定規則
        //first 存在bool的都轉爲bool,true > false
        var_dump(true > 0);  //bool(true)
        //next 存在數字,均轉爲數字
        var_dump("12" > 2);   //bool(true)
        var_dump(1 > "a");    //bool(true)  
        var_dump('f' > 2);    //bool(false)
        //next 均爲數字字符串則轉爲數字比較
        var_dump("12" > "110"); //bool(fase)
        //last 按字符串比較
        var_dump("a1" < "b");  //false
    ?>

3.數組

<?php
        //數組聲明經過array關鍵詞,除定義常規數組外還能夠經過=>來聲明鍵值對數組
        $arrCars = array("bmw","volvo","audi","volvo");
        $arrAges = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
        //數組遍歷
        //1.for
        for($i = 0;$i < count($arrCar);$i++){
            echo $arrCar[$i];
        }
        //2.foreach
        foreach($arrCars as $car){
            echo $car;
        }
        foreach($arrAges as $key => $value){
            echo $key."'s age is ".$value;
        }
        //3.指針
        reset($arrAges);
        while(list($key,$val)= each($arrAges)) {
            echo "$key=> $val<br />";
        }
        
        //經常使用數組方法
        count($arrCar); //返回數組大小,4
        sort($arrCar);  //排序,按元素內容正向排序,【"audi","bmw","volvo","volvo"】
        usort($arrCar,"mySortFunc");  //根據自定義函數進行排序
        array_unique($arrCar);  //移除重複元素,【"audi","bmw","volvo"】
        array_push($arrCar,"tesla"); //入棧元素,【"audi","bmw","volvo","tesla"】
        array_shift($arrCar);   //刪除並返回數組首個元素,【"bmw","volvo","tesla"】
        array_map("myMapFunc",$arrCar);   //對數組內每一個元素執行自定義函數
    ?>

4.字符串函數

  • strlen(str) 返回字符串str長度
<?php
        $strName = "HelloWorld";
        echo strlen(strName);   //10
    ?>
  • strpos(str,subStr) 返回子串subStr在str的位置
<?php
        $strName = "Hello World";
        echo strpos(strName,"World");   //6
    ?>
  • explode() 將字符串轉換爲數組
<?php
        $arrWords = explode(" ","Hello World");
        var_dump($arrWords);    //array(0 => "Hello",1 => "World")
        //implode與explode相對,將數組轉換爲字符串,別名join
        echo implode(" ",$arrWords);  //"Hello World"
    ?>
  • strcmp($str1,$str2) 比較兩字符串的大小
<?php
        $str1 = "hello";
        $str2 = "world";
        if(strcmp($str1,$str2) > 0)
          echo "$str1大於$str2";
    ?>

5.類與對象

<?php
        //經過Class關鍵字聲明類,封裝了相關的成員屬性和方法
        Class Person{
            //類的屬性
            public $name;
            //類構造函數
            function __construct($n){
                $this->name = $n;
            }
            //【public】公有方法,在各個位置都可訪問
            public function sayHi(){
                echo "hi,my name is ".$this->name;
            }
            //【private】私有方法,只有在本類中訪問
            private function temp(){
                echo "here in Person";
            }
        }
        //子類(經過extends關鍵字繼承父類中修飾符爲public和protected的屬性和方法,php中爲單繼承,父類僅有一個)
        Class Programmer extends Person{
            public $type;
            //當子類中能夠聲明與父類中同名的方法,該方法具備與父類不一樣的功能,稱爲重載
            function __construct($n,$t){
                //當須要調用父類中方法時,經過parent::funcName來訪問 
                parent::__construct($n);
                //$this是類中自帶的指針,指向當前調用該方法的對象
                $this->type = $t;
            }
            public function sayType()
            {
                echo "I'm a ".$this->type;
            }
        }
        //經過new關鍵字聲明子類對象
        $objPgm = new Programmer("zhangweipei","rd");
        //調用父類繼承的方法
        $objPgm->sayHi();   //hi,my name is zhangweipei
        //調用自身方法
        $objPgm->sayType(); //I'm a rd
        //父類中private方法沒法被繼承,所以下面調用報錯
        $objPgm->temp();    //Fatal error
    ?>

6.魔術方法

在類中具備「魔術功能」的一些特定方法稱爲魔術方法,一般以__開頭,常見的魔術方法除上面見到的__construct外還有__set、__get、__call服務器

方法 說明 語法
__construct 構造函數,建立對象時 public void __construct (mixed $value)
__set 在給不可訪問屬性賦值時 public void __set ( string $name , mixed $value )
__get 讀取不可訪問屬性的值時 public mixed __get ( string $name)
__call 在對象中調用一個不可訪問方法時 public mixed __call ( string $name , array $arguments )
<?php
        Class Person{
            private $name = "defalutName";
        
            public function sayHi(){
                echo "hi,my name is ".$this->name."\n";
            }

            private function temp(){
                echo "Inside in Person";
            }
            //在給不可訪問屬性賦值時
            public function __set($name , $value){
                echo "you're setting ".$name." to ".$value."\n";
            }
            //讀取不可訪問屬性的值時
            public function __get($name){
                echo "you're getting ".$name."\n";
            }
            //在對象中調用一個不可訪問方法時
            public function __call($name , $arguments)
            {
                echo "you're calling function ".$name." with arguments ".implode(",", $arguments)."\n";
            }
        }

        $objP = new Person();
        echo $objP->name;           //you're getting name
        $objP->sayHi();             //hi,my name is defalutName

        $objP->name = "Lee";        //you're setting name to Lee
        $objP->temp("arg1","arg2"); //you're calling function temp with arguments arg1,arg2
        
    ?>

7.文件操做

<?php
        //打開文件,第一個參數爲文件路徑,第二個爲打開模式,
        //常見的打開模式有r只讀、w只寫、r只寫(追加)、x只寫(文件不存在時不新建)、r+讀寫等
        $fileHandle = fopen("test.txt","a+");
        //全讀
        $strContent = fread($fileHandle,filesize("test.txt"));
        //逐行讀
        while(!feof($fileHandle)){
            $strLine = fgets($fileHandle);
        }
        //寫文件
        fwrite($fileHandle,"hello world\n");
        //關閉文件
        fclose($fileHandle);
        
    ?>

8.異常處理

當異常發生時,若未被捕獲或執行相應處理將致使嚴重錯誤而中斷程序,經過異常處理方法能夠捕獲異常並執行相應的邏輯ide

<?php
     //handleArr方法僅接受array類型的參數,不然便拋出異常
     function handleArr($arr)
     {
        if(!is_array($arr)){
            //Exception爲php內置的異常類,接受兩個參數,第一個爲錯誤信息,第二個爲錯誤代碼
            //也自定義繼承系統Exception類的異常類,而後在catch中調用自定義方法
            throw new Exception("param is not array", 1);
        }
        # some code handle with arr
     }
     try {
        $intTemp = 1;
        //傳入整形參數,觸發異常
        handleArr($intTemp);  
     } 
     //捕捉異常
     catch (Exception $e) {
        //Exception中的經常使用方法有
        echo $e->getCode();  //返回錯誤代碼
        echo $e->getMessage(); //返回錯誤信息
        echo $e->getFile();  //返回代碼文件的完整路徑
        echo $e->getLine();  //返回代碼文件中產生異常的代碼行號
     }
?>

9.系統變量

變量 說明
$GLOBALS 全局做用域中可用的變量
$_SERVER 服務器及執行環境的信息
$_GET 經過 URL 參數傳遞給當前腳本的變量的數組
$_POST 經過Post方式傳遞給當前腳本的變量的數組
$_COOKIE 經過 HTTP Cookies 方式傳遞給當前腳本的變量的數組

Reference:
http://www.w3school.com.cn/php/
http://php.net/docs.php
PHP和MySql Web開發[book]函數

博文做者:vicfeel
博文出處:http://www.cnblogs.com/vicfeel
本文版權歸做者和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文連接,謝謝合做!
若是閱讀了本文章,以爲有幫助,您能夠爲個人博文點擊「推薦一下」!this

相關文章
相關標籤/搜索