PHP 常用關鍵字比較

define 和 defined

define — 定義一個常量。定義成功,返回 true,否則返回 false
defined — 檢查某個名稱的常量是否存在。若存在,返回 true,否則返回 false

實例:

defined('YII_DEBUG') or define('YII_DEBUG', true);

//等同於:
if (!defined('YII_DEBUG')) {
    define('YII_DEBUG', true);
}

關於代碼中 or 的用法:

  • 邏輯運算符的運算順序是從左向右
  • or 運算符的左結合性
  • or 運算中,如果運算時有值爲 true,則整個表達式爲 true,後面代碼不執行

get 和 post

  • post 更安全(參數不會顯示在url上),不會緩存數據,get 會將數據緩存起來
  • post 發送的數據量更大,get 在url上有長度限制
  • post 能發送更多的數據類型,get 只能發送 ASCII 字符
  • post 比 get 慢
  • post 是向服務器提交數據的一種請求,get 是向服務器發索取數據的請求

include、include_once 和 require、require_once

  • include():會將指定文件讀入並執行裏面的程序
  • require():會將目標文件的內容讀入,並且把自己本身代換成這些讀入的內容
  • include_once()、require_once():如果該文件已經被包含,則不會再次包含

include 和 require 的區別:

  • require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。
  • require 在出錯時產生 E_COMPILE_ERROR 級別的錯誤,include 只產生警告 E_WARNING,換句話說,require 將導致腳本中止,而 include 腳本會繼續運行。
<?php
include 'a.php'; // 假設 a.php 並不存在,程序可以繼續執行
echo '111';

// 運行結果:
Warning: include(a.php): failed to open stream: No such file or directory 
in D:\www\index.php on line 3

Warning: include(): Failed opening 'a.php' for inclusion 
(include_path='.;C:\php\pear') in D:\www\index.php on line 3
111
<?php
require 'a.php'; // 假設 a.php 並不存在,程序立即停止
echo '111';

// 運行結果:
Warning: require(a.php): failed to open stream: No such file or directory 
in D:\www\index.php on line 3

Fatal error: require(): Failed opening required 'a.php' 
(include_path='.;C:\php\pear') in D:\www\index.php on line 3
  • incdlue 與 require 的功能相同,但在用法上卻有些不同。include 是有條件包含函數,而 require 則是無條件包含函數。
// 如果變量$var爲真,則包含文件
if ($var) { include('example.php'); }

// 不管變量$var取何值,都將包含文件
if ($var) { require('example.php'); }
<?php
require 'a.php';
requrie 'a.php'; // a.php 被包含了兩次

require 'a.php';
require_once 'a.php'; // 檢查到已經包含過,不會進行第2次包含

isset 和 empty

  • isset — 檢測變量是否已定義並且值不是 NULL
    如果沒有定義或變量值爲 NULL,返回 false,否則返回 true
  • empty — 檢查一個變量是否爲空
    判斷一個變量是否被認爲是空的。當一個變量並不存在,或者它的值等同於FALSE,那麼它會被認爲不存在。如果變量不存在的話,empty()並不會產生警告。
  • empty 的重點是:是否爲空,isset 的重點是:是否已設置並且非 NULL

針對 empty(),以下的東西被認爲是空的:(即 empty(var) 返回 true)

  • “” (空字符串)
  • 0 (作爲整數的0)
  • 0.0 (作爲浮點數的0)
  • “0” (作爲字符串的0)
  • NULL
  • FALSE
  • array() (一個空數組)
  • $var; (一個聲明瞭,但是沒有值的變量)

echo、print、print_r 和 var_dump

  • echo:可以輸出一個或者多個字符串,多個值之間用逗號分隔。echo是語言結構,並不是真正的函數,沒有返回值,不能作爲表達式的一部分使用。
  • print:只能打印出簡單類型變量的值(如int,string)。如果字符串成功顯示則返回 true,否則返回 false
  • print_r:可以打印出複雜類型變量的值(如數組,對象),數組以括起來的鍵和值的列表顯示,並以 Array 開頭,但 print_r() 輸出布爾值和 NULL 的結果沒有意義
  • var_dump:判斷一個變量的類型與長度,並輸出變量的數值,如果變量有值輸出的是變量的值並返回數據類型。var_dump 的輸出信息是最豐富的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章