PHP中容易混淆函數總結

1.echo和print的區別
  PHP中echo和print的功能基本相同(輸出),可是二者之間仍是有細微差異的。echo輸出後沒有返回值,但print有返回值,當其執行失敗時返回flase。所以能夠做爲一個普通函數來使用,例如執行下面的代碼後變量$r的值將爲1。
  複製PHP內容到剪貼板
  PHP代碼:
  $r = print 「Hello World」;
  這意味着print可用在一些複雜的表達式中,而echo則不行。可是,由於echo語句不要求返回任何數值,所已在代碼中echo語句的運行效率要略微快於print語句。
  2.include與require的區別
  include()與require()的功能也基本相同(包含),但在用法上也有一些不一樣,include()是有條件包含函數,而require()則是無條件包含函數。例如在下面代碼中,若是變量$a爲真,則將包含文件a.php:
  複製PHP內容到剪貼板
  PHP代碼:
  if($a){
  include(「a.php」);
  }
  而require()則和include()不一樣,無論$a取何值,下面的代碼將把文件a.php包含進文件裏:
  複製PHP內容到剪貼板
  PHP代碼:
  if($a){
  require(「a.php」);
  }
  在錯誤處理方面,使用include語句,若是發生包含錯誤,程序將跳過include語句,雖然會顯示錯誤信息可是程序仍是會繼續執行!但requre卻會給你來個致命錯誤。
  固然,從字面意思上咱們也能夠理解七分:requre是很強硬的請求、要求的意思。
  3.require_once()和include_once()語句
  題外話了,由於長的像,簡單require_once()和include_once()語句分別對應於require()和include()語句。 require_once() 和include_once()語句主要用於須要包含多個文件時,能夠有效地避免把同一段代碼包含進去而出現函數或變量重複定義的錯誤。
  4.空字符串(」)和NULL的區別
  PHP中空字符串和NULL都是以值爲0存儲的,可是他們的類型並不同,你能夠試一下echo gettype(」);和echo gettype(NULL);你會發現他們打印出來的分別是string和NULL,固然還有0也容易混淆,你能夠試試echo gettype(0);打印一下類型,會發現0的類型是integer(整型),可見字符串(」)、NULL和0是「等值」但不等類型。
  5.!isset和empty的區別
  從字面意思上咱們就能夠明白:empty是判斷一個變量是否爲「空」,而isset 則是判斷一個變量是否已經設置。可是這裏有一點絕對要注意起來:當一個變量值爲0,empty 認爲這個變量同等於空,即至關於沒有設置。好比當咱們檢測$id 變量的時候,當$id=0 ,用empty和isset來檢測變量$id是否已經配置,兩都將返回不一樣的值:empty 認爲沒有配置,isset 則可以取得 $id 的值,看下邊例子:
  複製PHP內容到剪貼板
  PHP代碼:
  $id=0;
  empty($id)?print 「我是空的」:print 「我是$id .」; //結果:我是空的
  !isset($id)?print 「我是空的」:print 「我是$id .」;//結果:我是0
  6.==(等)和===(恆等)的區別
  回顧上面第四條空字符串(「」)和NULL的區別,再來看一個例子:
  複製PHP內容到剪貼板
  PHP代碼:
  」 == NULL;
  」 === NULL;
  運行以後你會發現第一個爲true,而第二個則爲false!可見==只是比較值是否相等,而===則不但比較值,還會比較類型,更爲嚴格。
  7.數組合並中+和array_merge的區別
1、當鍵名不一樣的時候array_merge+功能是同樣的。
$a = array(0 => 'a', 1 => 'b');
$b = array(2 => 'c', 3 => 'd');
$c = $a + $b;
var_dump($c);
echo '<br />';
var_dump(array_merge($a, $b));
 
 
 
 
 
 
 

 
將輸出
array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
 
 
 
 

 
2、鍵名爲數字時,array_merge()不會覆蓋掉原來的值,但+合併數組則會把最早出現的值做爲最終結果返回,而把後面的數組擁有相同鍵名的那些值「拋棄」
$a = array('a','b');
$b = array('c','d');
$c = $a + $b;
var_dump($c);
echo '<br />';
var_dump(array_merge($a, $b));
$a = array('a','b');
$b = array('c','d');
$c = $a + $b;
var_dump($c);
echo '<br />';
var_dump(array_merge($a, $b));
 
 
 
 
 
 
 
 
 

 
將輸出
array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }
array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
 
 
 
 

 
3、鍵名爲字符時,+仍然把最早出現的值做爲最終結果返回,而把後面的數組擁有相同鍵名的那些值「拋棄」掉,但array_merge()此時會覆蓋掉前面相同鍵名的值
$a = array('aa' => 'a', 'bb' => 'b');
$b = array('cc' => 'c', 'bb' => 'd');
$c = $a + $b;
var_dump($c);
echo '<br />';
var_dump(array_merge($a, $b));
 
 
 
 
 
 
 

 
將輸出
array(3) { ["aa"]=> string(1) "a" ["bb"]=> string(1) "b " ["cc"]=> string(1) "c" }
array(3) { ["aa"]=> string(1) "a" ["bb"]=> string(1) "
d" ["cc"]=> string(1) "c" }
相關文章
相關標籤/搜索