empty()會告訴你乙個值是否為空。
isset()會告訴你乙個值是否設定。
空的定義
- integer ->0
- double ->0.0
- string->」「(空串)
-string->」0」(這個要注意字串」0」也為空)
- boolean->false
- 陣列->array()
- null
- 物件
empty()在5.5以前只允許傳入引數,5.5以後可以傳入表示式,
所以empty也可以用於檢查函式返回是否為空。
5.0以前無屬性的物件也為空。
-----------------------
通常使用三元運算子+isset();
$val = isset($_get['car']) ? $_get['car'] : "default" ;
如果使用empty會把 0,「0」,false等合法的輸入覆蓋掉
使用isset時 ,只有值為null時也會被覆蓋(也就是值未設定時);
特殊情況下可以考慮使用array_key_exists($keyname,$array);
list(a,
b) = array(b,
a);
$s = "name";
$$s = 111;
echo
$name ;// 111
當變數名由函式等組成的表示式計算出來時,把表示式使用大括號括起來。
$ = 111;
***,使用static
只在指令碼執行到結束有效。
使用apc擴充套件。
使用shmop, system v存入記憶體。(windows上不可以使用system v)
使用檔案,資料庫儲存。
當乙個複雜結構的資料要經過url進行傳遞的時候,可以使用下列兩個方法,將資料存入單一變數。
json_encode(), json_decode()
serialze(),unserialze()
1.使用json 解碼時開銷會比serialze大,但是方便與js互動;
2.json_encode()的第二個引數為true時,會生成關聯數值,如果沒有生成乙個stdclass物件
3.在url上使用serialize的資料要加上urlencode(),確保其url的元字元轉義;
printf_f()只輸出層級結構和值
var_dump()還輸出了各個變數的型別
var_export()輸出的是可以執行的陣列**
對於陣列中引用型別 print_f(),和var_dump(),當第二次看到這個引用的物件時會輸出recursion,var_export()則輸出null;
當他們第二個引數為true時,會返回列印的資訊而不列印
這時var_export()可以用來寫配置檔案
$content = "<?php \n return ".var_export($config);
file_put_contents('config.php', $content);
讀取時
$config = require('config.php');
var_dump的返回值需要使用輸出緩衝
ob_start();
var_dump($user);
$dump = ob_get_content();
ob_end_clean();
PHP經典例項讀書筆記 數字
問題 希望確保變數包含乙個數 即使變數的型別是字串 或者,希望檢查變數不僅僅是乙個數,而且要特別指定其型別是乙個數字型別。解決方案 使用is numeric 檢查乙個變數是否是乙個數。示例 is numeric不判斷資料型別 arr array 5,5 05 12.3,16.7 five 10e20...
卡耐基經典讀書筆記1
1 成功的人際關係在於你能捕捉對方觀點的能力 還有,看一件事須兼顧你和對方的不同角度。2 天底下只有一種方法可以影響他人,那就是提出他們的需要,並讓他們知道怎樣去獲取。3 能設身處地的為他人著想,了解別人心理想些什麼的人,永遠不用擔心未來。4 自我表現是人類天性中最主要的需求。當我們想出乙個好主意的...
PHP讀書筆記(一)
記錄一些php基礎學習的容易被忽略的知識點 一 對於任何簡單型別的變數,都可以將變數寫入到乙個由雙引號引起來的字串,如 echo tireqty tires 在雙引號中,變數名稱將被變數值所替代。而在單引號中,變數名稱,或者任何其他文字都會不經修改而傳送給瀏覽器。二 heredoc語法,用來指定字串...