- set - 有值的變數。
- true - 可以視為 false 以外的值皆可視為 true,包括字串"00"以及空白字元" "。
- false - 可以視為 false 的值有 0、0.0、空字串、字元 0、false、空的陣列、無屬性的物件以及 NULL。
- unset - 無值的變數,被 unset 或者設為 null。
unset
unset($var);isset
或者
$var = null;
if (isset($var)) {
// $var 存在且值不為 null
}
變數還可以依照 empty 與否做區分:
- empty - 可以視為 false 的 set 變數,與 unset 變數。
- non-empty - 可以視為 true 的 st 變數。
if (empty($string) ) { ... }
「==」 與「===」的差異?
「==」只有比值,「===」不只比值,還比型別。
if (0 == 'one' ) { // true }快速交換變數
if (0 == false ) { // true }
if (0 === 'one' ) { // false }
list($a, $b) = array($b, $a);動態變數
$a = 'A';$$a 先轉變成 $A,再轉變成 'apple'。
$A = 'apple';
print $$a; // print 'apple'
$num = 8;當內層變數無法直接呈現時,可以用大括弧包住,大括弧裡還可以用 function。
${'apple_'.$num}
靜態變數
function countNum() {同一個 request 共用同一個靜態變數,但不能跨 request。
static $cnt = 0;
$cnt++;
return $cnt;
}
倒出變數供偵錯
print_r($var);print_r 資訊較簡潔,var_dump 比 print_r 多了型別和長度;這三個 function 預設都是直接吐出資訊,print_r 與 var_export 可以加上第二個參數 true 來得到資訊,而 var_dump 則得用 buffer 方式,var_export 產出的資訊是 PHP Code。
或者
var_dump($var);
又或者
var_export($var);
$string = print_r($var, true);
ob_start();
var_dump($var);
$string = ob_get_contents();
ob_end_clean();
沒有留言:
張貼留言