1、變數可以連續傳遞賦值
2、var_dump()列印變數資訊
3、isset()與unset()
4、可變變數
$p = "temp";
$$p則表示$temp變數,即最右邊的變數的值為下一個變數的值
5、變數支援引用
類似C語言可以利用&獲取變數地址
6、變數的假值
0,null, 0.0, "", "0", array(),
7、單引號與雙引號的區別
雙引號中可以直接解析變數,單引號不可以
也能夠解析大括號,單引號不可以
能夠解析轉義字元(單引號只能轉義\和'),
$a = 100;
"the score is $a"輸出為:the score is 100
"the score is {$a}"輸出為:the score is 100
8、利用定界符宣告字串
$str = <<<EOF
heheheheeheheh
EOF;
相當於
$str = "heheheheeheheh";
EOF是自定義的
注意:開始標記必須是直接回車(空格都不能有)
結束標記後分號也直接回車
9、型別轉換
setType(變數,型別字串);
變數前加();
intval();floatval();strval();
10、常量
define(變數名字串, 值);
constant()獲取常量值
get_defined_constants();獲取所有常量列表
11、php支援goto語句(與C相同)
12、函式預設引數
function demo($demo = "demo"){
}
13、可變引數函式
function demo(){
$arr = func_get_args();
$num = func_num_args();
}
14、變數函式
function add(){
}
$var = "add";
$var();
15、回撥函式
回撥函式:其接收的引數是函式,則這個函式就可成為回撥函式
(1)利用變數函式來是實現的
//功能列印個位非0的數字
function remove($var, $func){
for($i=0; $i<$var; $i++){
if($func($i))
continue;
echo $i;
}
}
//此函式作為引數
function func($var){
if($var%10==0)
return true;
else
return false;
}
(2)當引數函式是類的靜態方法或者是物件的方法,變數函式不能夠支援
function remove($var, $func){
for($i=0; $i<$var; $i++){
if(call_user_func_array($func, array($i)))
continue;
echo $i;
}
}
class Filter{
function func($var){
if($var%10==0)
return true;
else
return false;
}
}
remove(100, array(new Filter(), "func"));
注意:此處呼叫remove函式是用陣列來描述引數函式,即$func=array(new Filter(), "func")
call_user_func_array($func, array($i))是將後邊陣列中的元素按照順序賦給前邊的函式的形參
16、require和include的區別
(1)require在預處理時候執行,想當於將require檔案中的用到的函式或內容拷貝到呼叫的地方
(2)require執行失敗會出現致命錯誤,而include是出現警告
17、閉包函式
(1)函式內部有函式,父函式可以返回子函式,但子函式不能有return
(2)子函式可以呼叫父函式內部的變數,利用關鍵字use
(3)父函式的內部變數會保持啟用狀態不會被釋放
function test(){
$a = 100;
$p = function () use(&$a){
echo $a++;
};
return $p;
}
$test = test();
$test();
$test();
$test();
多次呼叫$a的值是在不斷增加的