從零開始的PHP生活Day1

PHP

什么是PHP?

PHP(Hypertext Preprocessor,超文本預處理器)是一種服務器端的、跨平臺的、HTML嵌入式的弱類型開源腳本語言。

1、服務器端:PHP需要使用服務器軟件進行編譯。

2、跨平臺:PHP支持多種操作系統(tǒng)平臺,并且能夠被多種服務器軟件編譯。

3、HTML嵌入式:PHP代碼是編寫在HTML代碼中的。

4、弱類型:PHP定義變量時不需要指明數(shù)據(jù)類型。

5、開源:即開發(fā)源代碼,PHP的源代碼是向所有人公開的。

6、腳本語言:PHP是以腳本的方式進行編譯的,即只在被調(diào)用時進行編譯。

安裝環(huán)境

下載phpstudy 安裝路徑不要有空格和漢字

下載vscode

安裝插件漢化包

  • Beautify 用來格式化html js css代碼
  • Bracket Pair Colorrizer 用來區(qū)分括號
  • Chinese(Simplified) Language 漢化
  • Code Runner 用于運行代碼
  • Code Spell Checker 用于檢測代碼語法
  • Open in browser 用于在瀏覽器中打開html文件
  • PHP Debug 用于在程序中打斷點檢測
  • VS Color Picker 用于采集信息
  • vscode-fileheader 用于生成自定義文件頭信息
1545316474232.png

hello.php

<?php
  echo 'Hello World'; 
 ?>  
1545316531689.png

放在網(wǎng)站根目錄 然后瀏覽器訪問http://localhost:8080/hello.php

如果出現(xiàn)Hello World 那么恭喜你!!

php標記

XML風格的標記 默認

<?php?>

腳本風格的標記

<script language="php"></script>

簡短風格標記

<? ?>

ASP風格的標記

<% %>

php注釋

單行注釋

<?php
      echo '這是單行注釋';    //顯示信息。
  ?>

多行注釋

 <?php
  ?
      /*這是
  ?
      多行
  ?
      注釋。*/
  ?
      echo '這是多行注釋';
  ?
  ?>

Shell注釋

<?php
      header("content-Type:text/html; charset=gb2312");
  ?
      echo '這是Shell注釋';    #顯示信息。
  ?
  ?>

php輸出

echo

echo 來輸出一個或多個字符串

void echo(string arg1[, string…]);

echo沒有返回值,其中“arg1”和“…”為一系列要輸出的字符串對象。

 <?php
  ?
      echo '使用echo輸出字符串';    //使用echo輸出字符串。
  ?
  ?>

print

print”來輸出一個字符串

int print(string $arg);

print的返回值總為“1”,其中“$arg”為要輸出的字符串對象。

      print '使用print輸出字符串';    //使用print輸出字符串。
  ?>

print和echo的作用基本一樣,兩者之間的區(qū)別在于echo沒有返回值而print總是返回“1”,因此echo的執(zhí)行速度相對來說稍快一些。

printf()

printf()”函數(shù)來輸出格式化的字符串,語法格式如下:

int printf(string format[, mixedarg1[, mixed $…]]);

printf()函數(shù)的返回值為字符串長度,其中“format”為需要輸出的字符串,其中需要使用類型指示符來指明輸出的格式;“arg1”和“$…”為可選參數(shù),用于指定一系列要輸出的對象。

常用的類型指示符

指示符 描述
%b 將參數(shù)當作整數(shù),并顯示為二進制數(shù)
%c 將參數(shù)當作整數(shù),并顯示為對應的ASCII字符
%d 將參數(shù)當作整數(shù),并顯示為有符號的十進制數(shù)
%f 將參數(shù)當作浮點數(shù),并顯示為浮點數(shù)
%o 將參數(shù)當作整數(shù),并顯示為八進制數(shù)
%s 將參數(shù)當作字符串,并顯示為字符串
%u 將參數(shù)當作整數(shù),并顯示為無符號的進制數(shù)
%x 將參數(shù)當作整數(shù),并顯示為小寫的十六進制數(shù)
%X 將參數(shù)當作整數(shù),并顯示為大寫的十六進制數(shù)

</figure>

  <?php
  ?
      $num1 = 1;    //定義一個整型變量。
  ?
      $num2 = 2;    //定義一個整型變量。
  ?
      //計算“$num1”與“$num2”之和。
  ?
      $sum = $num1 + $num2;
  ?
      //使用printf()函數(shù)輸出格式化的字符串。
  ?
      printf('%d + %d = %d', $num1, $num2,$sum);
  ?
  ?>

print_r()

print_r()函數(shù)來輸出數(shù)組結(jié)構(gòu)

bool print_r(mixed expression[, boolreturn]);

其中“expression”為需要輸出的數(shù)組對象;“return”為可選參數(shù),用于指定函數(shù)的返回值,默認值為“false”表示返回“1”,并直接輸出數(shù)據(jù)結(jié)構(gòu),若設置為“true”則表示返回一個由數(shù)據(jù)結(jié)構(gòu)組成的字符串。

  <?php
  ?
      $arr = array('this', 'is', 'an', 'array');    //定義一個數(shù)組變量。
  ?
      print_r($arr);    //使用print_r()函數(shù)輸出數(shù)組結(jié)構(gòu)。
  ?
  ?>

如果“expression”為整型或字符串等類型的變量,則輸出該變量本身;如果“expression”為數(shù)組,則按鍵值和元素的順序輸出該數(shù)組中的所有元素。

標量數(shù)據(jù)類型

boolean

布爾型(boolean)數(shù)據(jù)類型用于存放一個真(true)或假(false)值,其中“true”和“false”為PHP的內(nèi)部關(guān)鍵字。

布爾數(shù)據(jù)類型主要用于應用程序的邏輯運算,大多使用在條件控制語句或循環(huán)控制語句的條件表達式中。

在PHP中不僅僅只有boolean值“false”為假,在一些特殊情況下某些非boolean也會被認為是假,例如:“0”、“0.0”、“'0'”、空白字符串('')和只有聲明卻沒有賦值的數(shù)組等。

 <?php
  ?
      $boo = true;    //定義一個布爾型變量,并賦值為“true”。
  ?
      //判斷$boo的值是否為“true”。
  ?
     if ($boo == true)
  ?
          echo '變量$boo為真';    //顯示信息。
  ?
     else
  ?
          echo '變量$boo為假';    //顯示信息。
  ?
  ?>

string

字符串型(string)數(shù)據(jù)類型用于存放一個連續(xù)的字符序列,即由一連串字符組成的字符串,而這些字符可以是數(shù)字字母、漢字符號。

在PHP中定義字符串的方法有單引號(')、雙引號(")和界定符(<<<)三種。

單引號

使用單引號定義字符串,即使用一對 ' 將字符串的字符包含在內(nèi)。

  <?php
  ?
      //定義一個字符串型變量,并賦值為“this is a string”。
  ?
      $str = 'this is a string';
  ?
      echo $str;    //顯示信息。
  ?
  ?>

雙引號

使用雙引號定義字符串,即使用一對 " 將字符串的字符包含在內(nèi)。

<?php
  ?
      //定義一個字符串型變量,并賦值為“this is a string”。
  ?
      $str = "this is a string";
  ?
      echo $str;    //顯示信息。
  ?
  ?>

區(qū)別在于:

1、需要轉(zhuǎn)義的字符不同:在單引號定義的字符串中,只需要對單引號 ' 進行轉(zhuǎn)義;而在雙引號定義的字符串中,還需要對雙引號 " 、美元符號 $ 等關(guān)鍵字符進行轉(zhuǎn)義。

2、變量的輸出方式不同:使用單引號定義的字符串中所包含的變量會按照普通字符串輸出;而使用雙引號定義的字符串中所包含的變量會被自動替換為變量的值。

  <?php
  ?
      //定義一個字符串型變量,并賦值為“this is a string”。
  ?
      $str = 'this is a string';
  ?
      echo '使用單引號輸出:$str';    //顯示信息。
  ?
      echo '<br/>';    //換行。
  ?
      echo "使用雙引號輸出:$str";   //顯示信息。
  ?
  ?>
1545314316426.png

界定符

使用界定符定義字符串,即使用一對 <<<str str; 將字符串的字符包含在內(nèi),其中 str 為指定的標識符。

<?php
      //定義一個字符串型變量,并賦值為“this is a string”。
  ?
      $str = <<<std
  ?
      this is a string
  ?
  std;
  ?
      echo $str;    //顯示信息。
  ?
  ?>

標識符前如果出現(xiàn)其他符號或字符時會發(fā)生錯誤,因此結(jié)束標識符必須單獨另起一行,且不允許有空格。

integer

整型(integer)數(shù)據(jù)類型用于存放整數(shù),且只能存放整數(shù),存放的整數(shù)可以為正數(shù)負數(shù),也可以用十進制、八進制十六進制來表示。

如果需要用八進制來表示整型,那么數(shù)字的前面必須加上“0”;而如果需要用十六進制來表示整型,那么數(shù)字的前面必須加上“0x”。

如果在八進制中出現(xiàn)了非法數(shù)字(8和9),那么非法數(shù)字及其后的所有數(shù)字都會被忽略掉。

如果數(shù)值超過整型所能表示的最大范圍(32位操作系統(tǒng)中最大的整型數(shù)值為2147483647,64位操作系統(tǒng)中最大的整型數(shù)值為9223372036854775807),就會被當作浮點型處理,而這種情況被稱為整數(shù)溢出。

 <?php
  ?
      //定義一個用十進制表示的整型變量。
  ?
      $num1 = 1234567890;
  ?
      //定義一個用八進制表示的整型變量。
  ?
      $num2 = 01234567890;
  ?
      //定義一個用八進制表示的整型變量。
  ?
      $num3 = 01234567;
  ?
      //定義一個用十六進制表示的整型變量。
  ?
      $num4 = 0x1234567890;
  ?
       //顯示信息。
  ?
      echo '數(shù)值1234567890不同進制的輸出結(jié)果:<br/>';
  ?
      echo '十進制的輸出結(jié)果:'.$num1.'<br/>';
  ?
      echo '第一個八進制的輸出結(jié)果:'.$num2.'<br/>';
  ?
      echo '第二個八進制的輸出結(jié)果:'.$num3.'<br/>';
  ?
      echo '十六進制的輸出結(jié)果:'.$num4;
  ?
  ?>

float

浮點型(float)數(shù)據(jù)類型用于存放數(shù)值,這個數(shù)值可以是超過整型范圍的整數(shù),也可以是小數(shù)。而浮點型數(shù)值的書寫格式有兩種:

1、標準格式:如3.1415、-34.56。

2、科學計數(shù)格式:如3.456E1、987.65E-3。

在PHP中浮點型數(shù)值只是一個近似值,要盡量避免在浮點型數(shù)值之間進行大小比較,因為比較的結(jié)果往往是不準確的。

  <?php
  ?
      //用標準格式定義一個浮點型變量。
  ?
      $num1 = 3.14159265359;
  ?
      //用科學計數(shù)格式定義一個浮點型變量。
  ?
      $num2 = 314159265359E-11;
  ?
      //顯示信息。
  ?
      echo '圓周率的兩種書寫格式:<br/>';
  ?
      echo '標準格式:'.$num1.'<br/>';
  ?
      echo '科學計數(shù)格式:'.$num2;
  ?
  ?>

復合數(shù)據(jù)類型

復合數(shù)據(jù)類型存儲的是按照一定規(guī)則組成的元素類型的數(shù)據(jù)。

在PHP中,可以使用array和object兩種復合數(shù)據(jù)類型。

數(shù)組(array)

數(shù)組(array)是一組數(shù)據(jù)的集合,即將一系列數(shù)據(jù)組織起來,形成一個可操作的整體,這些數(shù)據(jù)可以是標量數(shù)據(jù)、數(shù)組、對象資源等。

數(shù)組中的每個數(shù)據(jù)都被稱為一個“元素”,元素包括“索引(鍵名)”和“值”兩個部分,而在PHP中索引可以由數(shù)值(數(shù)字索引)或字符串(關(guān)聯(lián)索引)組成,而值則可以是多種數(shù)據(jù)類型。

在PHP中,定義數(shù)組的語法格式有三種:

1、$array = array('value1', 'value2',……);

2、$array[key] = 'value';

3、$array = array(key1 => 'value1',key2 => 'value2', ……);

其中,“key”為數(shù)組元素的索引,“value”為數(shù)組元素的值。

<?php
  ?
      $arr1 = array('this', 'is', 'an','array');    //定義一個數(shù)組。
  ?
      print_r($arr1);    //輸出數(shù)組結(jié)構(gòu)。
  ?
      echo '<br/>';    //換行。
  ?
      //定義一個數(shù)組。
  ?
      $arr2[0] = 'this';
  ?
      $arr2[1] = 'is';
  ?
      $arr2[2] = 'an';
  ?
      $arr2[3] = 'array';
  ?
      print_r($arr2);    //輸出數(shù)組結(jié)構(gòu)。
  ?
      echo '<br/>';    //換行。
  ?
      //定義一個數(shù)組。
  ?
      $arr3 = array(0 => 'this', 1=> 'is', 2 => 'an', 3 => 'array');
  ?
      print_r($arr3);    //輸出數(shù)組結(jié)構(gòu)。
  ?
  ?>

對象(object)

對象(object)就是一組數(shù)據(jù)和與這組數(shù)據(jù)相關(guān)的操作封裝在一起而形成的一個實體。

特殊數(shù)據(jù)類型

在PHP中,可以使用resource和null兩種特殊數(shù)據(jù)類型。

資源(resource)

資源(resource)是一種特殊變量,又稱為“句柄”,是對外部資源的一個引用,即需要通過專門的函數(shù)來建立和使用,主要用于文件操作、連接數(shù)據(jù)庫或創(chuàng)建圖形畫布區(qū)域等。

在PHP中,系統(tǒng)會自動啟動垃圾回收機制,即自動釋放不再使用的資源,避免內(nèi)存被消耗殆盡,提高應用程序的運行速度。因此,PHP很少需要手工釋放資源。

空值(null)

空值(null)表示沒有為變量設置任何值。在PHP中,變量為空值的情況有三種:

1、在定義變量時,沒有為變量賦任何值。

2、變量被賦值為空值。

3、被“unset()”函數(shù)處理過的變量。

在PHP中,空值不區(qū)分大小寫,即“null”和“NULL”的效果是一樣的。

  <?php
  ?
      $null1;    //定義一個變量,但不為其賦值。
  ?
      if (is_null($null1))    //判斷變量是否為空值。
  ?
          echo '$null1為空值。<br/>';   //顯示結(jié)果。
  ?
      $null2 = null;    //定義一個變量,并為其賦空值。
  ?
      if (is_null($null2))    //判斷變量是否為空值。
  ?
          echo '$null2為空值。<br/>';   //顯示結(jié)果。
  ?
      $null3 = '空值';    //定義一個變量,并為其賦為“空值”。
  ?
      unset($null3);    //釋放變量$null3。
  ?
      if (is_null($null3))    //判斷變量是否為空值。
  ?
          echo '$null3為空值。';    //顯示結(jié)果。
  ?
  ?>

檢測數(shù)據(jù)類型

有時根據(jù)功能要求,需要檢測某個數(shù)據(jù)屬于哪種類型,這時可以通過檢測數(shù)據(jù)類型函數(shù)分別針對不同數(shù)據(jù)類型的數(shù)據(jù)進行檢測,從而判斷數(shù)據(jù)是否屬于某個數(shù)據(jù)類型,即如果符合返回true,否則返回false。

針對上述八種數(shù)據(jù)類型,PHP分別提供了九種基本的檢測數(shù)據(jù)類型的函數(shù):

1、“is_bool()”函數(shù):檢測變量是否屬于布爾型。

2、“is_string()”函數(shù):檢測變量是否屬于字符串型。

3、“is_numeric()”函數(shù):檢測變量是否是由數(shù)字組成的字符串。

4、“is_integer()”函數(shù):檢測變量是否屬于整型。

5、“is_float()”函數(shù):檢測變量是否屬于浮點型。

6、“is_null()”函數(shù):檢測變量是否為空值。

7、“is_array()”函數(shù):檢測變量是否屬于數(shù)組類型。

8、“is_object()”函數(shù):檢測變量是否屬于對象類型。

9、“is_resource()”函數(shù):檢測變量是否屬于資源類型。

  <?php
      $boo = true;    //定義一個布爾型變量。
  ?
      if (is_bool($boo))    //判斷變量是否屬于布爾型。
  ?
          echo '$boo為布爾型。<br/>';   //顯示結(jié)果。
  ?
      $str = '123';    //定義一個字符串型變量。
  ?
      if (is_string($str))    //判斷變量是否屬于字符串型。
  ?
          echo '$str為字符串型。<br/>';   //顯示結(jié)果。
  ?
      //判斷變量是否是由數(shù)字組成的字符串。
  ?
      if (is_numeric($str))
  ?
          //顯示結(jié)果。
  ?
          echo '$str是由數(shù)字組成的字符串。<br/>';
  ?
      $num1 = 123;    //定義一個整型變量。
  ?
      if (is_integer($str))    //判斷變量是否屬于整型。
  ?
          echo '$num1為整型。<br/>';   //顯示結(jié)果。
  ?
      $num2 = 1.23;    //定義一個浮點型變量。
  ?
      if (is_float($num2))    //判斷變量是否屬于浮點型。
  ?
          echo '$float為浮點型。<br/>';   //顯示結(jié)果。
  ?
      $null;    //定義一個變量,但不為其賦值。
  ?
      if (is_null($null))    //判斷變量是否為空值。
  ?
          echo '$null為空值。<br/>';   //顯示結(jié)果。
  ?
      $arr = array('this', 'is', 'an', 'array');    //定義一個數(shù)組。
  ?
      if (is_array($arr))    //判斷變量是否屬于數(shù)組類型。
  ?
          echo '$arr為數(shù)組。';    //顯示結(jié)果。
  ?
  ?>

轉(zhuǎn)換數(shù)據(jù)類型

雖然PHP是一種弱類型的語言,但在實際應用中有時仍需要轉(zhuǎn)換數(shù)據(jù)類型。在PHP中,轉(zhuǎn)換數(shù)據(jù)類型的方法有兩種:

1、在變量前加上括號,并在括號中寫入類型名稱。

2、使用“settype()”函數(shù)轉(zhuǎn)換數(shù)據(jù)類型,語法格式如下:

bool settype(mixed var, stringtype);

settype()函數(shù)的返回值為布爾值,即轉(zhuǎn)換成功返回“true”,否則返回“false”。其中“var”為需要改變數(shù)據(jù)類型的變量;“type”為需要變成的數(shù)據(jù)類型。

  <?php
  ?
      $str = '123.456';    //定義一個字符串型變量。
  ?
      $num = (float)$str;    //將字符串型變量轉(zhuǎn)換為浮點型。
  ?
      if (is_float($num))    //判斷變量是否屬于浮點型。
  ?
          echo '$num為浮點型。<br/>';   //顯示結(jié)果。
  ?
      echo '$num = '.$num.'<br/>';    //顯示結(jié)果。
  ?
      //將浮點型變量轉(zhuǎn)換為整型。
  ?
      $boo = settype($num, 'integer');
  ?
      if ($boo)    //判斷是否轉(zhuǎn)換成功。
  ?
          echo '轉(zhuǎn)換成功!<br/>';   //顯示結(jié)果。
  ?
     else
  ?
          echo '轉(zhuǎn)換失?。?lt;br/>';   //顯示結(jié)果。
  ?
      if (is_integer($num))    //判斷變量是否屬于整型。
  ?
          echo '$num為整型。<br/>';   //顯示結(jié)果。
  ?
      echo '$num = '.$num;    //顯示結(jié)果。
  ?
  ?>

轉(zhuǎn)換數(shù)據(jù)類型時,是從最左邊的一個字符開始進行轉(zhuǎn)換,并只轉(zhuǎn)換符合說要轉(zhuǎn)換類型要求的部分,即如果出現(xiàn)非法字符,非法字符及其后的字符都會被忽略掉,比如:浮點型變量轉(zhuǎn)換為整型時,小數(shù)部分會被舍去;字符串型變量轉(zhuǎn)換為整型或浮點型時,如果以數(shù)字開頭就截取到非數(shù)字位,否則為“0”。

將變量轉(zhuǎn)換成布爾型時,“null”和“0”會被轉(zhuǎn)換為“false”,其他則轉(zhuǎn)換為“true”;而布爾型變量轉(zhuǎn)換為整型時,“false”轉(zhuǎn)換為“0”,“true”轉(zhuǎn)換為“1”。

常量(重點)

常量存放的是值不變化的、固定的數(shù)據(jù),即在腳本的其他任何位置都不能修改常量的值,比如:圓周率、自然對數(shù)底和牛頓引力等。

聲明常量

在PHP中,需要使用“define()”函數(shù)來聲明常量,語法格式如下:

bool define(string name, mixedvalue[, bool $case_insensitive]);

“define()”函數(shù),如果聲明成功則返回“true”,否則返回“false”。其中“name”為常量名;“value”為常量值;“$case_insensitive”為可選參數(shù),用于指定常量名是否大小寫敏感。

使用常量

在PHP中,獲取常量的值有兩種方法:

(1)使用常量名直接獲取常量值。

(2)使用“constant()”函數(shù)獲取常量值,語法格式如下:

mixed constant(string $name);

constant()函數(shù)的返回值為常量值。其中“$name”為常量名或存儲常量名的變量。

如果常量未定義,使用constant()函數(shù)獲取常量值時,系統(tǒng)會報出錯誤提示,因此通常使用constant()函數(shù)之前需要判斷常量是否已經(jīng)定義。

constant()函數(shù)和直接使用常量名輸出的效果是一樣的,但是使用constant()函數(shù)可以通過變量動態(tài)地輸出不同的常量值,在使用上要靈活很多。

判斷常量是否被定義

在PHP中,使用“defined()”函數(shù)判斷常量是否被定義,語法格式如下:

bool defined(string $name);

“defined()”函數(shù),如果常量已經(jīng)被定義則返回“true”,否則返回“false”。其中“$name”為常量名或存儲常量名的變量。

 <?php
  ?
      define(CONSTANT, '常量');    //定義一個常量。
  ?
      //定一個字符串型變量,存放常量名。
  ?
      $name = 'CONSTANT';
  ?
      echo CONSTANT. '<br/>';    //顯示結(jié)果。
  ?
      //判斷常量是否被定義。
  ?
     $boo = defined($name);
  ?
     if ($boo)
  ?
      {
  ?
          echo '常量已被定義!<br/>';   //顯示結(jié)果。
  ?
          echo constant($name);    //顯示結(jié)果。
  ?
      }
  ?
  ?>

預定義常量

在PHP中,除了可以聲明自定義常量外,還可以使用預定義常量來獲取PHP中的信息,常用的預定義常量如下表所示。

預定義常量 描述
FILE 默認常量,PHP程序文件名
LINE 默認常量,PHP程序行數(shù)
PHP_VERSION 內(nèi)建常量,PHP程序的版本
PHP_OS 內(nèi)建常量,執(zhí)行PHP解析器的操作系統(tǒng)名稱
TRUE 真值
FALSE 假值
NULL 空值
E_ERROR 指到最近的錯誤處
E_WARNING 指到最近的警告處
E_PARSE 指到解析語法有潛在問題處
E_NOTICE 發(fā)生不尋常處的提示,但不一定是錯誤處

FILE”和“LINE”中的“__”是兩條下劃線,而不是一條下劃線。

表中以“E_”開頭的預定義常量是PHP的錯誤調(diào)試部分。如需詳細了解,請參考“error_reporting()函數(shù)”。

使用預定義常量的方法與使用自定義常量的方法相同,沒有什么差別。

變量(重點)

變量與常量正好相反,它用于存放的是可變的數(shù)據(jù),即在程序執(zhí)行過程中變量的值可以發(fā)生變化

聲明和使用變量

在聲明變量時,系統(tǒng)會為程序中的每一個變量分配一個存儲單元,這些變量都是使用“變量名”來標識,即變量名實質(zhì)上就是計算機內(nèi)存單元的名稱,因此通過變量名即可訪問內(nèi)存中的數(shù)據(jù)。

在PHP中,使用變量之前并不需要進行聲明,即只需要為變量賦值,而PHP的變量名用“$”和標識符表示,且區(qū)分大小寫。

變量名的標識符不能以數(shù)字字符開頭,也不能以字母和下劃線以外的其他字符開頭。

變量賦值就是給變量一個具體的數(shù)據(jù)值,通常是通過賦值運算符來實現(xiàn)的,在PHP中為變量賦值的方法有三種:

1、直接賦值:直接將數(shù)據(jù)值賦值給變量。

2、變量間賦值:將一個變量的數(shù)據(jù)值賦值給另一個變量。

3、引用賦值:使用“&”符號將一個變量的內(nèi)存地址傳給另一個變量,即再為該內(nèi)存中的數(shù)據(jù)起一個“別名”。當改變其中一個變量的值時,另一個變量也會跟著發(fā)生變化。

變量間賦值和引用賦值之間的區(qū)別在于,變量間賦值是開辟一個新的內(nèi)存空間,并復制原變量內(nèi)容;引用賦值這是給原變量內(nèi)容另起一個變量名,二者使用的是同一內(nèi)存空間。??

  <?php
  ?
  ?
      $str1 = 'str1';    //直接賦值。
  ?
     echo '$str1的值:'.$str1.'<br/>';    //顯示結(jié)果。
  ?
      $str2 = $str1;    //變量間賦值。
  ?
     echo '$str2的值:'.$str2.'<br/>';    //顯示結(jié)果。
  ?
      $str3 = & $str1;    //引用賦值。
  ?
     echo '$str3的值:'.$str3.'<br/>';    //顯示結(jié)果。
  ?
      $str1 = 'str2';    //修改變量的值。
  ?
     echo '$str1的值:'.$str1.'<br/>';    //顯示結(jié)果。
  ?
     echo '$str2的值:'.$str2.'<br/>';    //顯示結(jié)果。
  ?
     echo '$str3的值:'.$str3;    //顯示結(jié)果。
  //定義一個值為“str1”變量“$str1”,然后將該變量的值賦值給另一個變量“str2”,再將該變量引用給另一個變量“$str3”,最后輸出結(jié)果。
  ?>

變量的作用域

變量的作用域是指能夠使用變量的有效范圍,變量必須在其有效范圍內(nèi)使用,否則就會失去其意義。在PHP中,變量的作用域有三種:

1、局部變量:變量定義在函數(shù)內(nèi)部,其作用域為所在函數(shù)。

注意:局部變量在函數(shù)調(diào)用結(jié)束以后,其存儲的數(shù)據(jù)就會被立即清除,內(nèi)存空間也會被釋放。

2、全局變量:變量定義在所有函數(shù)以外,其作用域為整個PHP文件。

注意:如果需要在自定義函數(shù)內(nèi)部使用全局變量,那么則要使用關(guān)鍵字“global”在調(diào)用全局變量時進行聲明。

3、靜態(tài)變量:能夠在函數(shù)調(diào)用結(jié)束之后保留變量值,當再次回到其作用域時,可以繼續(xù)使用保留的變量值。

注意:靜態(tài)變量需要使用關(guān)鍵字“static”來進行聲明。

  <?php
  ?
      //定義一個全局變量。
  ?
      $str = '全局變量:在函數(shù)以外輸出。';
  ?
      //定義一個自定義函數(shù)。
  ?
     function example()
  ?
      {
  ?
          //定義一個局部變量。
  ?
          $str = '局部變量:調(diào)用函數(shù)時輸出。';
  ?
          echo $str.'<br/>';    //顯示結(jié)果。
  ?
      }
  ?
      example();    //調(diào)用函數(shù)。
  ?
     echo $str;    //顯示結(jié)果。
  //在函數(shù)內(nèi)外定義并輸出變量名相同的局部變量“局部變量:調(diào)用函數(shù)時輸出”和全局變量“全局變量:在函數(shù)以外輸出”。
  ?>
  <?php
  ?
  ?
      $str = '全局變量';    //定義一個全局變量。
  ?
      //定義一個自定義函數(shù)。
  ?
     function example()
  ?
      {
  ?
          echo '直接使用全局變量:'.$str.'<br/>';    //顯示結(jié)果。
  ?
          global $str;    //使用關(guān)鍵字“global”調(diào)用全局變量。
  ?
          echo '通過global使用全局變量:'.$str;    //顯示結(jié)果。
  ?
      }
  ?
      example();    //調(diào)用函數(shù)。
  //在自定義函數(shù)內(nèi)使用并輸出值為“全局變量”的全局變量。
  ?>
  <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個自定義函數(shù)。
  ?
     function example1()
  ?
      {
  ?
          $num = 0;    //定義一個普通變量。
  ?
          $num++;    //遞增。
  ?
          echo $num.' ';    //顯示結(jié)果。
  ?
      }
  ?
      //定義一個自定義函數(shù)。
  ?
     function example2()
  ?
      {
  ?
          static $num = 0;    //定義一個靜態(tài)變量。
  ?
          $num++;    //遞增。
  ?
          echo $num.' ';    //顯示結(jié)果。
  ?
      }
  ?
      echo '普通變量輸出:';    //顯示結(jié)果。
  ?
      //循環(huán)10次。
  ?
      for ($i = 0; $i < 10; $i++)
  ?
      {
  ?
          example1();    //調(diào)用函數(shù)。
  ?
      }
  ?
      echo '<br/>靜態(tài)變量輸出:';    //顯示結(jié)果。
  ?
      //循環(huán)10次。
  ?
      for ($i = 0; $i < 10; $i++)
  ?
      {
  ?
          example2();    //調(diào)用函數(shù)。
  ?
      }
  //分別使用普通變量和靜態(tài)變量在自定義函數(shù)中輸出遞增數(shù)字。
  ?>

可變變量

可變變量是一種非常特殊的變量,它允許動態(tài)地改變一個變量的名稱,即可變變量的名稱由另一個變量的值來確定。

在PHP中,在變量的前面再加上一個“$”即可實現(xiàn)可變變量。

  <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      $str1 = 'str2';    //定義一個字符串型變量。
  ?
      $str2 = '可變變量';    //定義一個字符串型變量。
  ?
      echo '$str1的值:'.$str1.'<br/>';    //顯示結(jié)果。
  ?
      echo '$str2的值:'.$str1.'<br/>';    //顯示結(jié)果。
  //定義并輸出一個值為“可變變量”的可變變量。
  ?>

??說明:“$$str1”為可變變量,在執(zhí)行時,首先將“str1”解析為值“str2”,然后再解析“str2”,最后將值輸出。??

預定義變量

在PHP中,除了可以使用自定義變量外,還可以使用預定義變量來獲取用戶會話、用戶操作系統(tǒng)環(huán)境和本地操作系統(tǒng)環(huán)境等信息,常用的預定義變量如下表所示。

預定義變量 描述
$_SERVER['SERVER_ADDR'] 當前運行腳本所在服務器的IP地址
$_SERVER['SERVER_NAME'] 當前運行腳本所在服務器的主機名
$_SERVER['SERVER_POST'] 服務器所使用的端口
$_SERVER['SERVER_SIGNATURE'] 包含服務器版本和虛擬主機名的字符串
$_SERVER['REQUEST_METHOD'] 訪問頁面時的請求方法
$_SERVER['REMOTE_ADDR'] 正在瀏覽當前頁面用戶的IP地址
$_SERVER['REMOTE_HOST'] 正在瀏覽當前頁面用戶的主機名
$_SERVER['REMOTE_PORT'] 用戶連接到服務器時所使用的端口
$_SERVER['SCRIPT_FILENAME'] 當前執(zhí)行腳本的絕對路徑名
$_SERVER['DOCUMENT_ROOT'] 指當前運行腳本所在的文檔根目錄
$_COOKIE 通過HTTPCookie傳遞到腳本的信息
$_SESSION 包含與所有會話變量有關(guān)的信息
$_POST 包含通過POST方法傳遞的參數(shù)的相關(guān)信息
$_GET 包含通過GET方法傳遞的參數(shù)的相關(guān)信息
$GLOBALS 由所有已定義全局變量組成的數(shù)組

運算符(重點)

算數(shù)運算符

算術(shù)運算符就是處理算術(shù)運算的符號,即對數(shù)字數(shù)據(jù)進行、、取余等運算。算術(shù)運算符是數(shù)字處理中應用最多的、最常用的運算符,PHP中的算術(shù)運算符如下表所示。

運算符 說明 示例
+ 加法運算符 a +b
- 減法運算符 a -b
* 乘法運算符 a *b
/ 除法運算符 a /b
% 取余運算符 a %b
++ 遞增運算符 a++、++a
-- 遞減運算符 a--、--a

??說明:使用“%”取余時,如果被除數(shù)($a)是負數(shù),那么得到的結(jié)果也是負數(shù)。??

??說明:遞增/遞減運算符有兩種使用方法,一種是將運算符放在變量后面,即先返回變量的當前值,再見變量的當前值增加/減少1;另一種是將運算符放在變量前面,即先將變量增加或減少1,再賦值給原變量。??

  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
     $num1 = 10;    //定義一個整型變量。
  ?
     $num2 = 5;    //定義一個整型變量。
  ?
     $num3 = 3;    //定義一個整型變量。
  ?
     $num4 = 2;    //定義一個整型變量。
  ?
      //顯示結(jié)果。
  ?
     echo '$num1 = '.$num1.', $num2 = '.$num2\. ', $num3 = '.$num3\. ', $num4 ='.$num4.'<br/>';
  ?
     echo '$num1 + $num2 = '.($num1 + $num2).'<br/>';
  ?
     echo '$num1 - $num2 = '.($num1 - $num2).'<br/>';
  ?
     echo '$num3 * $num4 = '.($num3 * $num4).'<br/>';
  ?
     echo '$num1 / $num4 = '.($num1 / $num4).'<br/>';
  ?
     echo '$num1 % $num3 = '.($num1 % $num3).'<br/>';
  ?
     echo '$num1++ = '.$num1++.'<br/>';
  ?
     echo '$num2-- = '.$num2--.'<br/>';
  ?
     echo '++$num3 = '.++$num3.'<br/>';
  ?
     echo '--$num4 = '.--$num3;
  //使用算術(shù)運算符對四個值分別為“10”、“5”、“3”和“2”的變量進行算術(shù)運算。
  ?>
  

?```

字符串運算符

字符串運算符的作用是將兩個字符串連接起來,并結(jié)合成一個新的字符串。在PHP中,字符串運算符只有一個,即英文句號“.”。

注意:與C語言和Java語言不同,PHP中的“+”只能作為算術(shù)運算符使用,而不能作為字符串運算符。

  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
     $str1 = '字符串';    //定義一個字符串型變量。
  ?
     $str2 = '運算符';    //定義一個字符串型變量。
  ?
      //顯示結(jié)果。
  ?
     echo '$str1 = '.$str1.', $str2 = '.$str2.'<br/>';
  ?
     echo '$str1.$str2 = '.($str1.$str2);
  //使用字符串運算符連接值為“字符串”和“運算符”兩個字符串變量,并輸出組合成的新字符串。
  ?>

賦值運算符

賦值運算符的作用是將右邊的值賦值給左邊的變量。PHP中的賦值運算符如下表所示。

運算符 說明 示例 展開形式
= 賦值 a =b a =b
+= 加賦值 a +=b a =a + $b
-= 減賦值 a -=b a =a - $b
*= 乘賦值 a *=b a =a * $b
/= 除賦值 a /=b a =a / $b
%= 取余賦值 a %=b a =a % $b
.= 連接賦值 a .=b a =a.$b
 <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
     $num = 1;    //將“1”賦值給變量“$num”。
  ?
     echo '$num = '.$num.'<br/>';   //顯示結(jié)果。
  ?
     $num += 1;    //將“$num”加“1”后賦值給“$num”。
  ?
     echo '$num += 1的結(jié)果:'.$num.'<br/>';    //顯示結(jié)果。
  ?
     $num -= 1;    //將“$num”減“1”后賦值給“$num”。
  ?
     echo '$num -= 1的結(jié)果:'.$num.'<br/>';    //顯示結(jié)果。
  ?
     $num *= 2;    //將“$num”乘“2”后賦值給“$num”。
  ?
     echo '$num *= 2的結(jié)果:'.$num.'<br/>';    //顯示結(jié)果。
  ?
     $num /= 2;    //將“$num”除“2”后賦值給“$num”。
  ?
     echo '$num /= 2的結(jié)果:'.$num.'<br/>';    //顯示結(jié)果。
  ?
      //將“$num”除“2”取余后賦值給“$num”。
  ?
     $num %= 2;
  ?
     echo '$num %= 2的結(jié)果:'.$num.'<br/>';    //顯示結(jié)果。
  ?
     $str = '賦值';    //定義一個字符串型變量。
  ?
     echo '$str = '.$str.'<br/>';   //顯示結(jié)果。
  ?
      //將“$str”連接“運算符”后賦值給“$str”。
  ?
     $str .= '運算符';
  ?
     echo '$str .= \'運算符\'的結(jié)果:'.$str;    //顯示結(jié)果。
  ?
  ?>

邏輯運算符

邏輯運算符的作用是將多個邏輯命題連接成更復雜的邏輯命題,從而進行實現(xiàn)邏輯判斷,主要用在條件控制語句的判斷表達式中。PHP中的邏輯運算符如下表所示。

運算符 說明 示例 結(jié)果為真
&&或and a &&b或a andb a和b都為真
||或or a ||b或a orb a為真或b為真
xor 異或 a xorb a、b一真一假
! !$a $a為假

注意:“&&”與“and”、“||”與“or”雖然能夠進行同樣的邏輯運算,但是它們之間的優(yōu)先級是不同的。

<?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
     $boo1 = true;    //定義一個布爾型變量。
  ?
     $boo2 = false;    //定義一個布爾型變量。
  ?
      //顯示結(jié)果。
  ?
     echo '$boo1 = '.var_export($boo1, true).', $boo2 = '.var_export($boo2,tru
  ?
  e).'<br/>';
  ?
     echo '$boo1 && $boo2 = '.var_export($boo1 && $boo2,true).'<br/>';
  ?
     echo '$boo1 && $boo1 = '.var_export($boo1 && $boo1,true).'<br/>';
  ?
     echo '$boo2 && $boo2 = '.var_export($boo2 && $boo2,true).'<br/>';
  ?
     echo '$boo1 || $boo2 = '.var_export($boo1 || $boo2, true).'<br/>';
  ?
     echo '$boo1 || $boo1 = '.var_export($boo1 || $boo1, true).'<br/>';
  ?
     echo '$boo2 || $boo2 = '.var_export($boo2 || $boo2, true).'<br/>';
  ?
     echo '$boo1 xor $boo2 = '.var_export($boo1 xor $boo2, true).'<br/>';
  ?
     echo '$boo1 xor $boo1 = '.var_export($boo1 xor $boo1, true).'<br/>';
  ?
     echo '$boo2 xor $boo2 = '.var_export($boo2 xor $boo2, true).'<br/>';
  ?
     echo '!$boo1 = '.var_export(!$boo1, true);
  ?
  ?>

比較運算符(重點)

比較運算符的作用是對變量或表達式的結(jié)果進行大小、真假等的比較,如果比較結(jié)果為真,則返回“true”,如果比較結(jié)果為假,則返回“false”。PHP中的比較運算符如下表所示。

運算符 說明 示例
< 小于 a <b
> 大于 a >b
<= 小于等于 a <=b
>= 大于等于 a >=b
== 相等 a ==b
!= 不等 a !=b
=== 恒等 a ===b
!== 非恒等 a !==b

說明:恒等“===”表示變量不僅在數(shù)值上相等,而且數(shù)據(jù)類型也是一致的;非恒等“!==”表示變量數(shù)值或數(shù)據(jù)類型不同。

 <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
     $num = 3;    //定義一個整型變量。
  ?
      //顯示結(jié)果。
  ?
     echo '$num = '.$num.'<br/>';
  ?
     echo '$num < 4的結(jié)果:'.var_export($num < 4, true).'<br/>';
  ?
     echo '$num > 2的結(jié)果:'.var_export($num > 2, true).'<br/>';
  ?
     echo '$num <= 4的結(jié)果:'.var_export($num <= 2, true).'<br/>';
  ?
     echo '$num >= 2的結(jié)果:'.var_export($num >= 2, true).'<br/>';
  ?
     echo '$num == 3的結(jié)果:'.var_export($num == 3, true).'<br/>';
  ?
     echo '$num != 2的結(jié)果:'.var_export($num == 2, true).'<br/>';
  ?
     echo '$num === 3的結(jié)果:'.var_export($num == 3, true).'<br/>';
  ?
     echo '$num !== \'3\'的結(jié)果:'.var_export($num !== '3', true);
  ?
  ?>

錯誤控制運算符(重點)

錯誤控制運算符是PHP中獨特的一種運算符,其作用是對程序中出現(xiàn)錯誤的表達式進行操作,即對錯誤信息進行屏蔽。在PHP中,在錯誤的表達式前面加上錯誤控制運算符“@”即可屏蔽錯誤信息。

注意:錯誤控制運算符只能屏蔽錯誤信息,而不能真正地解決錯誤。因此錯誤控制運算符通常用來屏蔽一些不影響程序運行的非必要錯誤信息,而影響程序運行的重要錯誤信息不推薦使用。

  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
     $num1 = (5 / 0);    //定義一個整型變量。
  ?
     $num2 = @ (5 / 0);    //定義一個整型變量。
  ?
  ?>
1545315660799.png

三元運算符

三元運算符,也成為三目運算符,其作用是根據(jù)一個表達式在另外兩個表達式中選擇一個來執(zhí)行,語法格式如下:

表達式1?表達式2:表達式3;

如果表達式1的結(jié)果為真,執(zhí)行表達式2,如果表達式1的結(jié)果為假,則執(zhí)行表達式3。

??說明:三元運算符最好放在括號中使用。??

 <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //顯示結(jié)果。
  ?
     echo (true?'表達式1為真':'表達式1為假');
  ?
      echo '<br/>';
  ?
     echo (false?'表達式1為真':'表達式1為假');
  ?
  ?>

位運算符

位運算符的作用將二進制位從低位到高位對齊后進行運算。PHP中的位運算符如下表所示。

運算符 說明 示例
& 按位與 a &b
| 按位或 a |b
^ 按位異或 a ^b
~ 按位取反 ~$a
<< 向左移位 a <<b
>> 向右移位 a >>b
 <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      $num1 = 13;    //定義一個整型變量。
  ?
      $num2 = 11;    //定義一個整型變量。
  ?
      //顯示結(jié)果。
  ?
     echo '$num1 = '.$num1.', $num2 = '.$num2.'<br/>';
  ?
     echo '$num1 & $num2 = '.($num1 & $num2).'<br/>';
  ?
     echo '$num1 | $num2 = '.($num1 | $num2).'<br/>';
  ?
     echo '$num1 ^ $num2 = '.($num1 ^ $num2).'<br/>';
  ?
     echo '~$num1 = '.(~$num1).'<br/>';
  ?
     echo '$num1 << 1 = '.($num1 << 1).'<br/>';
  ?
     echo '$num1 >> 1 = '.($num1 >> 1);
  ?
  ?>

說明:“13”的二進制原碼為“0000 1101”,“11”的二進制原碼為“0000 1011”,“9”的二進制原碼為“0000 1001”,“15”的二進制原碼為“0000 1111”,“6”的二進制原碼為“0000 0110”,“-14”的二進制補碼為“1111 0010”,“26”的二進制原碼為“0001 1010”。

運算符的優(yōu)先級

表達式可能是由多個不同的運算符連接起來的,不同的運算符順序可能得出不同結(jié)果,甚至出現(xiàn)錯誤運算錯誤,因此必須按一定順序進行結(jié)合,才能保證運算的合理性和結(jié)果的正確性、唯一性。

運算符優(yōu)先級就是在表達式中哪一個運算符先計算、哪一個后計算,其遵循的規(guī)則是:

1、優(yōu)先級高的操作先執(zhí)行,優(yōu)先級低的操作后執(zhí)行。

2、同一優(yōu)先級的操作按照從左到右的順序執(zhí)行。

3、括號內(nèi)的操作最先執(zhí)行。

??說明:由于括號的優(yōu)先級最高,因此在運算符較多的表達式中,不妨多使用括號。??

運算符的優(yōu)先級

優(yōu)先級別 運算符 結(jié)合方向
1 ++、--、~、@
2 !
3 *、/、%
4 +、-
5 <<、>>
6 <、<=、>、>=
7 ==、!=、===、!==
8 &
9 ^
10
11 &&
12
13 ?:
14 =、+=、-=、*=、/=、.=、%=
15 and
16 xor
17 or

??說明:優(yōu)先級別的數(shù)值越小,運算符的優(yōu)先級越高。??

表達式和函數(shù)

表達式

表達式是通過具體的代碼來實現(xiàn)的,即由多個符號集合起來組成的代碼,是構(gòu)成PHP程序語言的基本元素,也是PHP最重要的組成元素。

組成表達式的符號是對PHP解釋程序有具體含義的最小單元,可以是變量名、函數(shù)名、運算符和數(shù)值等。

表達式和語句之間的區(qū)別在于分號“;”,即一個表達式之后加上一個分號之后就是一條語句。

注意:在編寫程序時,必須注意不要漏寫語句的分號“;”。

函數(shù)

函數(shù)就是將一些需要重復使用的功能代碼寫在一個獨立的代碼塊中,并在需要時單獨調(diào)用

在PHP中,使用關(guān)鍵字“function”定義函數(shù),語法格式如下:

functionfun_name([mixed arg1[, mixed…]])

{

fun_body;

}

其中“fun_name”為函數(shù)名;“arg1”和“…”為函數(shù)的參數(shù);“fun_body”為函數(shù)的主體,即功能實現(xiàn)代碼。

在函數(shù)定義好之后,只需要使用函數(shù)名并賦予正確的參數(shù),即可調(diào)用函數(shù),語法格式如下:

fun_name([mixed arg1[, mixed…]]);

其中“fun_name”為函數(shù)名;“arg1”和“…”為賦予函數(shù)的參數(shù)。

<?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function example($str)
  ?
      {
  ?
          echo $str;    //顯示結(jié)果。
  ?
      }
  ?
      example('定義和調(diào)用函數(shù)');    //調(diào)用函數(shù)。
  ?
  ?>

定義函數(shù)時,還有一種參數(shù)的設置方式,即可選參數(shù),也就是可以指定某個參數(shù)為可選參數(shù)。在PHP中,將參數(shù)放在參數(shù)列表末位,并指定其默認值,即可指定可選參數(shù)。

調(diào)用函數(shù)時,如果設置了可選參數(shù)值,那么可選參數(shù)的值為調(diào)用時的設定值;如果沒有設置可選參數(shù)值,那么可選參數(shù)的值為定義時的默認值。

  <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function example($num1, $num2 =2)
  ?
      {
  ?
          //顯示結(jié)果。
  ?
          echo '$num1 = '.$num1.',$num2 = '.$num2.'<br/>';
  ?
          echo '$num1 * $num2 * 2 ='.($num1 * $num2 * 2);
  ?
      }
  ?
      echo 'exmaple(1,3)<br/>';    //顯示結(jié)果。
  ?
      example(1, 3);    //調(diào)用函數(shù)。
  ?
      echo '<br/>';    //換行。
  ?
      echo'exmaple(1)<br/>';    //顯示結(jié)果。
  ?
      example(1);    //調(diào)用函數(shù)。
  ?
  ?>

數(shù)據(jù)是如何在函數(shù)間傳遞的?

在定義和調(diào)用函數(shù)時存在著兩種參數(shù):形參和實參。形參是定義函數(shù)時定義的參數(shù);實參是調(diào)用函數(shù)時傳入的參數(shù)。也就是說,調(diào)用函數(shù)時,需要將實參的值傳遞給形參。在PHP中,實參與形參之間數(shù)據(jù)傳遞的方式有兩種:

1、按值傳遞:按值傳遞就是將實參的值賦值給對應的形參,在函數(shù)主體的操作都是針對形參進行,操作的結(jié)果不會影響到實參,即函數(shù)返回之后,實參的值不會改變。

  <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function example($num)
  ?
      {
  ?
          $num *= 2;    //進行算術(shù)運算。
  ?
          echo '形參:$num = '.$num.'<br/>';    //顯示結(jié)果。
  ?
      }
  ?
      $num = 1;    //定義一個整形變量。
  ?
     echo '實參:$num = '.$num.'<br/>';   //顯示結(jié)果。
  ?
      example($num);    //調(diào)用函數(shù)。
  ?
     echo '函數(shù)調(diào)用之后的實參:$num = '.$num;    //顯示結(jié)果。
  ?
  ?>

2、按引用傳遞:按引用傳遞就是將實參的內(nèi)存地址傳遞給對應的形參,在函數(shù)主體針對形參進行的操作都會影響到實參,即函數(shù)返回之后,實參的值會發(fā)生改變。引用傳遞參數(shù)的方式需要在定義函數(shù)時在形參前面加上“&”符號。

<?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function example(&$num)
  ?
      {
  ?
          $num *= 2;    //進行算術(shù)運算。
  ?
          echo '形參:$num = '.$num.'<br/>';    //顯示結(jié)果。
  ?
      }
  ?
      $num = 1;    //定義一個整形變量。
  ?
     echo '實參:$num = '.$num.'<br/>';    //顯示結(jié)果。
  ?
      example($num);    //調(diào)用函數(shù)。
  ?
     echo '函數(shù)調(diào)用之后的實參:$num = '.$num;    //顯示結(jié)果。
  ?
  ?>

返回函數(shù)的操作結(jié)果

在實際開發(fā)中,經(jīng)常需要將函數(shù)的操作結(jié)果返回給調(diào)用者。在PHP中,通常使用關(guān)鍵字“return”來返回函數(shù)的操作結(jié)果,語法格式如下:

return mixed $value;

“return”會將程序控制權(quán)返回到調(diào)用者的作用域,并將函數(shù)的操作結(jié)果“$value”返回給調(diào)用者。

注意:關(guān)鍵字“return”只能返回一個值,如果需要函數(shù)返回多個值,可以使用數(shù)組來返回值。

注意:如果在全局作用域中使用關(guān)鍵字“return”,那么會終止腳本的執(zhí)行。

變量函數(shù)

變量函數(shù)和可變變量非常相似,可以通過變量來調(diào)用,即根據(jù)變量的值來調(diào)用相應的函數(shù)。

在PHP中,在變量名后面加上一對小括號,并在其中賦予正確的參數(shù),即可實現(xiàn)變量函數(shù)。

  <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function example()
  ?
      {
  ?
          echo '變量函數(shù)';    //顯示結(jié)果。
  ?
     }
  ?
      $str = 'example';    //定義一個字符串型變量。
  ?
     $str();    //調(diào)用變量函數(shù)。
  ?
  ?>

??說明:“str()”為變量函數(shù),在執(zhí)行時,首先將“str”解析為值“example”,然后再調(diào)用函數(shù)“example()”。??

引用函數(shù)

<?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function &example()
  ?
      {
  ?
          return '引用函數(shù)';    //返回結(jié)果。
  ?
      }
  ?
      $str = &example();    //對函數(shù)進行引用。
  ?
     echo $str;    //顯示結(jié)果。
  ?
  ?>

當不需要對函數(shù)繼續(xù)引用時,可以使用“unset()”函數(shù)取消對函數(shù)的引用。

  <?php
  ?
      //設置編碼格式,正確顯示中文。
  ?
      header("content-Type:text/html; charset=gb2312");
  ?
      //定義一個函數(shù)。
  ?
      function &example()
  ?
      {
  ?
          return '引用函數(shù)';    //返回結(jié)果。
  ?
      }
  ?
      $str = &example();    //對函數(shù)進行引用。
  ?
     echo $str.'<br/>';    //顯示結(jié)果。
  ?
     unset($str);    //取消引用。
  ?
     echo $str;    //顯示結(jié)果。
  ?
  ?>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容