PHP學習小結2

34。數組

    (1)$arr = array();表示建立一個空數組,並把建立的空數組賦值給變量$arr。

    (2)索引數組:索引數組是指數組的鍵是整數的數組,而且鍵的整數順序是從0開始,

初始化:$friut=array("蘋果","香蕉","菠蘿");

   (3)索引數組賦值

索引數組賦值有三種方式:

第一種:用數組變量的名字後面跟一箇中括號的方式賦值,固然,索引數組中,中括號內的鍵必定是整數。好比,$arr[0]='蘋果';

 

第二種:用array()建立一個空數組,使用=>符號來分隔鍵和值,左側表示鍵,右側表示值。固然,索引數組中,鍵必定是整數。好比,array('0'=>'蘋果');

 

第三種:用array()建立一個空數組,直接在數組裏用英文的單引號'或者英文的雙引號"賦值,數組會默認創建從0開始的整數的鍵。好比array('蘋果');這個數組至關於array('0'=>'蘋果');
  (4)訪問數組內容

$fruit0 = $fruit['0'];

若是是變量又不須要加引號。。

eg.$fruit[$index]

35.
foreach循環訪問索引數組裏的值

$fruit=array('蘋果','香蕉','菠蘿');
foreach($fruit as $k=>$v){
    echo '<br>第'.$k.'值是:'.$v;
}


36.
關聯數組初始化
第一種:$arr=array("orange"=>"橘子",

"orange"=>"橘子"

);
第二種:用數組變量的名字後面跟一箇中括號的方式賦值,固然,關聯數組中,中括號內的鍵必定是字符串。好比,$arr['apple']='蘋果';

複製過程當中用""或者''均可以

訪問關聯數組內容

$fruit0 = $fruit['banana'];


37.數組和變量的輸出

print_r($arr0)

38.
自定義函數

function name() {
    echo 'Eric';
}

調用方法:

name()

返回值
能夠返回一個數組

function numbers()
{
    return array(1,2,3);
}

$arr=numbers(1,2,3);

39.
可變函數
即經過變量的值來調用函數,由於變量的值是可變的,因此能夠經過改變一個變量的值來實現調用不一樣的函數。


function name() {
    echo 'jobs';
}
$func = 'name';
$func(); //調用可變函數

用$func來經過函數名字綁定一個函數,函數名字能夠改變,因此相應的調用

$func()也能夠執行不一樣的函數。

40.
判斷函數是否存在

function func() {
}
if (function_exists('func')){
    echo 'exists';
}

類是否認義可使用class_exists。

class MyClass{
}
// 使用前檢查類是否存在
if (class_exists('MyClass')) {
    $myclass = new MyClass();
}

文件是否存在file_exists等。

$filename = 'test.txt';
if (!file_exists($filename)) {
    echo $filename . ' not exists.';
}

41。類和對象

class Car {
    $name = '汽車';
    function getName() {
        return $this->name;
    } }

var 關鍵字若是沒有加上protected或者private,默認等於public

//實例化一個car對象
$car = new Car();
$car->name = '奧迪A6'; //設置對象的屬性值

echo $car->getName();  //調用對象的方法 輸出對象的名字 php


42. mysql

定義類的方法


class Car {
    public function getName() {
        return '汽車';
    }
}
$car = new Car();
echo $car->getName();

使用關鍵字static修飾的,稱之爲靜態方法,靜態方法不須要實例化對象,能夠經過類名直接調用,操做符爲雙冒號::。 正則表達式

class Car {
    public static function getName() {
        return '汽車';
    }
}
echo Car::getName(); //結果爲「汽車」

43. sql

Static靜態關鍵字

靜態屬性與方法能夠在不實例化類的狀況下調用,直接使用類名::方法名的方式進行調用。靜態屬性不容許對象使用->操做符調用。 設計模式


靜態方法也能夠經過變量來進行動態調用 數組

$func = 'getSpeed';
$className = 'Car';
echo $className::$func();  //動態調用靜態方法
類和類中的方法均可以經過變量來動態調用

靜態方法中,$this僞變量不容許使用。可使用self,parent,static在內部調用靜態方法與屬性。 app

44,。 函數

訪問控制

類屬性必須定義爲公有受保護私有之一。爲兼容PHP5之前的版本,若是採用 var 定義,則被視爲公有。 fetch


若是構造函數定義成了私有方法,則不容許直接實例化對象了,這時候通常經過靜態方法進行實例化,在設計模式中會常常使用這樣的方法來控制對象的建立,好比單例模式只容許有一個全局惟一的對象。 ui

class Car {
    private function __construct() {
        echo 'object create';
    }

    private static $_object = null;
    public static function getInstance() {
        if (empty(self::$_object)) {
            self::$_object = new Car(); //內部方法能夠調用私有方法,所以這裏能夠建立對象
        }
        return self::$_object;
    }
}
//$car = new Car(); //這裏不容許直接實例化對象
$car = Car::getInstance(); //經過靜態方法來得到一個實例
44.

重載

PHP中的重載指的是動態的建立屬性與方法

   (1)屬性重載:對不存在的屬性賦值,直接動態建立(這個動態建立是隻能被實例對象使用一次嗎,仍是能夠一次保留在類裏?)

   (2)方法重載


方法的重載經過__call來實現,當調用不存在的方法的時候,將會轉爲參數調用__call方法,當調用不存在的靜態方法時會使用__callStatic重載。

class Car {
    public $speed = 0;
    
    public function __call($name, $args) {
        if ($name == 'speedUp') {
            $this->speed += 10;
        }
    }
}
$car = new Car();
$car->speedUp(); //調用不存在的方法會使用重載
echo $car->speed;
       能夠在_call方法裏面實現你想實現的不存在方法的內容


45.

對象的高級特性

  (1)對象比較

當同一個類的兩個實例的全部屬性都相等時,可使用比較運算符==進行判斷,當須要判斷兩個變量是否爲同一個對象的引用時,可使用全等運算符===進行判斷。

  (2)對象複製


$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);
  (3)對象序列化

能夠經過serialize方法將對象序列化爲字符串,用於存儲或者傳遞數據,而後在須要的時候經過unserialize將字符串反序列化成對象進行使用。


$a = new Car();
$str = serialize($a); //對象序列化成字符串
echo $str.'<br>';
$b = unserialize($str); //反序列化爲對象
var_dump($b);
 


46.

單引號和雙引號的區別


單引號和雙引號到底有啥區別呢?

PHP容許咱們在雙引號串中直接包含字串變量。

而單引號串中的內容總被認爲是普通字符。

好比:

$str='hello';
echo "str is $str"; //運行結果: str is hello
echo 'str is $str'; //運行結果: str is $str

47.

去除字符串首尾的空格

trim去除一個字符串兩端空格。
rtrim是去除一個字符串右部空格,其中的r是right的縮寫。
ltrim是去除一個字符串左部空格,其中的l是left的縮寫。


48.

獲取字符串的長度

 

$len = strlen($str);
   獲取含中文的字符串長度(獲取長度包括其中的英文字符)


$str = "我愛你";
echo mb_strlen($str,"UTF8");//結果:3,此處的UTF8
49.

字符串的截取

一、英文字符串的截取函數substr()


$str='i love you';
//截取love這幾個字母
echo substr($str, 2, 4);
二、中文字符串的截取函數mb_substr()


$str='我愛你,中國';

//截取中國兩個字

echo mb_substr($str, 4, 2, 'utf8');//
50.

查找字符串

函數說明:strpos(要處理的字符串, 要定位的字符串, 定位的起始位置[可選])


$str = 'I want to study at imooc';
$pos = strpos($str, 'imooc');
echo $pos;//結果顯示19,表示從位置0開始,imooc在第19個位置開始出現
51.

替換字符串

函數說明:str_replace(要查找的字符串, 要替換的字符串, 被搜索的字符串, 替換進行計數[可選])


$str = 'I want to learn js';
$replace = str_replace('js', 'php', $str);
echo $replace;//結果顯示I want to learn php
52.

字符串的合併與分割

一、php字符串合併函數implode()

函數說明:implode(分隔符[可選], 數組)

返回值:把數組元素組合爲一個字符串

例子:

$arr = array('Hello', 'World!');
$result = implode('', $arr);
print_r($result);//結果顯示Hello World!

二、php字符串分隔函數explode()

函數說明:explode(分隔符[可選], 字符串)

返回值:函數返回由字符串組成的數組

例子:

$str = 'apple,banana';
$result = explode(',', $str);
print_r($result);//結果顯示array('apple','banana')

53.

什麼叫正則表達式

正則表達式是對字符串進行操做的一種邏輯公式,就是用一些特定的字符組合成一個規則字符串,稱之爲正則匹配模式。

$p = '/apple/';
$str = "apple banna";
if (preg_match($p, $str)) {
    echo 'matched';
}

其中字符串'/apple/'就是一個正則表達式,他用來匹配源字符串中是否存在apple字符串。

54.

正則表達式的基本語法

常常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~)

55.

取得當前的Unix時間戳

$time=time();


//date函數,第二個參數取默認值的狀況
echo date("Y-m-d");  //取得當前時間

//date函數,第二個參數有值的狀況
echo date("Y-m



56.

拋出一個異常

//建立可拋出一個異常的函數
function checkNum($number){
     if($number>1){
         throw new Exception("異常提示-數字必須小於等於1");
     }
     return true;
 }
 
//在 "try" 代碼塊中觸發異常
 try{
     checkNum(2);
     //若是異常被拋出,那麼下面一行代碼將不會被輸出
     echo '若是能看到這個提示,說明你的數字小於等於1';
 }catch(Exception $e){
     //捕獲異常
     echo '捕獲異常: ' .$e->getMessage();
 }
            getMessage()是Exception裏面輸入的文字.


其中經常使用的方法有:

getTrace 獲取異常追蹤信息
getTraceAsString 獲取異常追蹤信息的字符串
getMessage 獲取出錯信息

57.

'<br>'
爲PHP內的換行

58.建立一個二維數組

while($row =mysql_fetch_assoc($query)){
			$data[] = $row;
		}
$data[]  賦值表示每次加一個一維數組進去,最後結果是一個二維數組
相關文章
相關標籤/搜索