第一篇:黑馬程序員_PHP_課程同步筆記day18:PHP函數
【黑馬程序員】PHP課程同步筆記day18:PHP函數
PHP函數 1.概念
將一段常用的功能代碼,進行封裝,然后起個名字,叫”函數” 使用函數,可以減少我們的工作量。對于后期的項目維護,十分方便。2.函數定義格式
Function functionName(形參1,形參2,形參3......){
函數的功能代碼
[return 參數r] } 函數語法格式說明:
Function是系統關鍵字,不分大小寫。
functionName是自定義的函數名稱。函數名的命名規則與變量一樣,只是不加$符號。
()定義函數時的參數,該參數又稱為”形參”。
形式參數:主要用來接收調用函數者,傳遞過來的數據。
形參可以是多個,多個形參之間用逗號隔開,也可以沒有形參
形參其實就是一個變量的名稱,主要用來臨時存儲數據的。{}是函數的功能代碼。Return語句:
向誰返回內容?誰調用了該函數,就向誰返回。
返回什么內容?該內容的類型不限制,可以是任何數據類型
黑馬程序員濟南中心 編著
Return語句,一旦執行,函數將中止。也就是return語句之后的函數代碼不再執行。
Return 語句返回一個值,并退出函數。
3.函數調用
函數定義是不會自動執行的。函數必須要經過調用,才能看到結果 調用函數和定義函數不分順序。4.函數參數
a)形式參數(形參):形參主要用來接收調用函數傳遞過來的數據。
i.形參一般是變量,不能是具體的值
ii.形參只能在函數內部使用
b)實際參數(實參):向定義函數傳遞的數據
i.實參可以是具體值,也可以是一個變量
c)形參和實參的個數,一般情況下必須一致 Function showInfo($a){ Echo “OK”;} $a = 100;showInfo($a);函數參數傳遞 1.值傳遞(拷貝傳值)將一個變量的值,”拷貝”一份,傳給形參
黑馬程序員濟南中心 編著
在函數內部,對形參進行了修改,而函數外的這個變量不會改變 函數內的形參,與函數外的實參,是相互獨立的,沒有任何聯系的
在PHP中,默認”值傳遞”的有:字符型、整型、浮點型、布爾型、數組、NULL
2.引用傳遞
將一個變量的地址傳給形參,即形參與變量指向的是”同一物”.變量和參數之間是相互聯系,修改一個,另一個會跟著變。
參數在使用引用傳遞時,需要在”形參”前加一個”&”符號?!睂崊ⅰ鼻安荒芴砑?。
默認引用傳地址:資源和對象
黑馬程序員濟南中心 編著
3.默認參數
PHP支持默認參數。
當實參格式少于形參個數時,那么少的那個實參可以用末日的形參來代替
匿名函數
1.概念
沒有名字的函數就是匿名函數,它不能單獨定義也不能單獨調用 匿名函數一般用來給其他變量賦值的。
黑馬程序員濟南中心 編著
2.匿名函數的兩種用法
i.將匿名函數當成一個數據,賦給其他變量
ii.將匿名函數作為函數的參數來使用
變量作用域
變量作用域:就是變量生效的范圍
在PHP中三種變量作用域:全局變量、局部變量、超全局變量。1.全局變量
全局變量:在函數外部定義的變量,稱為”全局變量”。
黑馬程序員濟南中心 編著
全局變量,在網頁執行完畢,就消失了。在JS中,全局變量,可以直接在函數內部來使用 在PHP中,全局變量不能直接在函數內部使用 2.局部變量
局部變量:在函數內部定義的變量,稱為”局部變量”。局部變量,只能在函數內部來使用 局部變量,在函數執行完畢后就消失了。3.在局部作用域中訪問全局變量---global關鍵字
Global關鍵字,只能在函數內部來使用
不能在使用global關鍵字時,直接給變量賦值。只能是先聲明為全局,再賦值。
$GLOBALS超全局數組
“超全局數組變量”可以在網頁的任何地方使用,包括函數內部和函數外部。$GLOBALS超全局數組中包含的內容有:$_GET、$_POST、$_COOKIE、$_FILES
黑馬程序員濟南中心 編著
第二篇:黑馬程序員_PHP_課程同步筆記day13:PHP基礎介紹
【黑馬程序員】PHP課程同步筆記day13:PHP基礎介紹
1.語言基礎
PHP文件的訪問,必須要經過虛擬空間(域名),才能訪問PHP文件,不能本地直接訪問 Php文件的擴展名:.php Php代碼的標記: Php區分大小寫。但是函數名和關鍵字不區分大小寫。每一條語句,必須以英文下的分號(;)結束。2.語句結束符
每一條PHP語句,都要以英文狀態下的分號(;)結束。
PHP中的語法結構(if、switch、for、while、do while、function、foreach等)不能加分號(;)結尾。
如果PHP代碼中,只有一條語句的話,可以省略分號;如果是多條PHP語句,最后一條語句可以省略分號。3.注釋
HTML注釋: CSS注釋:/* */
黑馬程序員濟南中心 編著
JS注釋://或/* */ PHP的單行注釋://或# PHP的多行注釋:/* */ 注意:
PHP多行注釋不能嵌套
PHP的注釋在瀏覽器端同樣看不見
PHP變量
1.變量的概念
變量是臨時存儲數據的容器 變量是在內存中存在和運行的
變量是一個代號。用變量來代替一個數據 2.變量命名規則
變量名稱包含的字符有:a-z、A-Z、0-
9、_ 變量名只能以字母或下劃線開頭 變量名不能以數字開頭
PHP的變量前,必須加”$”符號?!?”不是變量名稱的一部分。”$”之后為變量名
PHP變量是區分大小寫的
PHP關鍵字,也可以作為變量名稱。如$if、$while等 PHP長文件名如何表示
“駝峰式命名”:$getUserName “下劃線式命名”:$get_user_name
黑馬程序員濟南中心 編著
PHP變量操作
1.定義變量
PHP的變量不用提前定義,用的時候直接賦值即可.$name = “abc”;JS的變量在使用時要提前聲明。Var name=”abc”;2.變量賦值
使用”=”賦值號,給變量進行賦值(往容器中裝東西)。
“=”含義:將”=”右邊的運算結果,賦值給”=”左邊的變量名稱,左邊不能是一個運算表達式。
舉例:$a = $b + 10*24-26 3.讀取變量值
$name = “Mary”;Echo “我的名字叫$name”;4.判斷變量是否存在isset()如果一個變量的值不等于NULL,就返回TRUE,反之返回FALSE 5.判斷變量是否為空empty()對于empty來說,0、””、”0”、0.0、NULL、FALSE、array()認為是空,返回TRUE,反之就返回FALSE.6.刪除變量unset()Unset()函數
語法:void unset(mixed $var[,mixed$....])提示:變量被刪除后,變量的返回值為NULL。
黑馬程序員濟南中心 編著
變量的值傳遞和引用傳遞
1、值傳遞
將變量的值”復制”一份,傳給另一個變量。
這兩個變量之間沒有任何聯系,修改其中一個,另一個變量的值不會改變。在PHP中,哪些數據類型,默認是”值傳遞”。包括:字符型、整形、浮點型、布爾型、數組、NULL。
在JS中,默認是”值傳遞”包括:字符型、數值型、布爾型、undefined、NULL
黑馬程序員濟南中心 編著
2.引用傳地址
將一個變量的數據地址,”復制”一份,傳給另一個變量。這兩個變量,指向同一份數據。
在PHP中,默認傳地址的數據類型有:對象、資源。在JS中,默認傳地址的數據類型有:數組、對象、函數。
但是在PHP 中,也可以讓所有其他類似數據,都變成”引用傳地址”,只需在引用的變量名前加”&”符號.黑馬程序員濟南中心 編著
可變變量
一個變量的名稱,可以用另一個變量的值來充當。如$$name;
實例:批量獲取表單提交值 代碼:
if(isset($_POST['ac'])&&$_POST['ac'] == “login”){
黑馬程序員濟南中心 編著
foreach($_POST as $key=>$value){
/*
$$key = $value
$username = $key;
$password = $value
*/
$$key = $value;//可變變量
}
$sql = “INSERT INTO 007_news(username,password)VALUES('$username','$password')”;
echo $sql.“
”;} ?> PHP超全局變量數組
1.PHP中的超全局變量數組
$_GET:獲取地址欄中傳遞的參數。
黑馬程序員濟南中心 編著
$_POST:獲取表單method=”post”提交的數據
$_REQUEST:包含$_GET、$_POST、$_COOKIE上數組中的數據 $_SERVER:獲取apache服務器或執行環境的相關信息 $GLOBALS:獲取全局變量的各個數據 $_SESSION:跟蹤用戶 $_COOKIE:跟蹤用戶 $_FILES:上傳文件 2.超全局變量$_POST的使用
描述:主要用來獲取表單method=”post”提交的數據。舉例:$username = $_POST[‘username’];3.實例:簡單PHP計算器 代碼實現:
if(isset($_POST['ac'])&&$_POST['ac'] == ”login“){
// 獲取表單提交值
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
$operator = $_POST['operator'];
//計算結果
switch($operator){
黑馬程序員濟南中心 編著
case 1:
$result = $value1 + $value2;
break;
case 2:
$result = $value1-$value2;
break;
case 3:
$result = $value1 * $value2;
break;
case 4:
$result = $value1 / $value2;
break;
case 5:
$result = $value1 % $value2;
} }else{
//網頁首頁下載完成時,變量初始化
$value1 = ”“;
$value2 = ”“;
$operator =1;
$result = ”“;}
黑馬程序員濟南中心 編著
?>
超全局變量$_GET的使用$_GET可以獲取地址欄中參數的數組
發送GET數據的方法總結
1.通過表單method=”get”發送
2.通過發送GET數據
黑馬程序員濟南中心 編著
3.通過JS的location對象也可以發送GET數據
4.使用PHP的header()函數傳遞參數
黑馬程序員濟南中心 編著
黑馬程序員濟南中心 編著
第三篇:黑馬程序員_PHP_課程同步筆記day30:PHP類中關鍵字
【黑馬程序員濟南】PHP課程同步筆記day30:PHP類中
關鍵字
今天我來為大家講解一下PHP類中的一些關鍵字: parent和self關鍵字 parent:
用在一個類的一個方法中;
代表這個類的“父類”——注意,是代表一個類,不是類的對象;
但:實際應用中,常常會看起來“代表”這個類的父類對象——因為用的時候,是使用了父類的對象來調用某個方法而產生了所謂的對象傳遞; [PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著 1;//聲明靜態屬12 性 13 } 14 15 class B extends A{ static function f1(){ echo “父類的靜態屬性s1:”.parent::$s1;echo “父類的常量PI:”.parent::PI;} } B::f1();顯示結果:
父類的靜態屬性s1:1
父類的常量PI:3.14
黑馬程序員濟南中心 編著
self:
用在一個類的一個方法中;
代表這個類“本身”——還是代表一個類,而不是類的對象; [PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著
己的常量PI:”.self::PI;} } B::f1();典型使用1:
在構造方法中,調用父類的構造方法,以完成對象的一些共同的數據初始化工作。[PHP] 純文本查看 復制代碼 ? 01
04 class Member{ 05 public $name;//聲明一個變量 06 public $salary;//聲明一個變量 07 //創建一個構造方法 08 function
09 __construct($name,$salary){ 10 $this->name = $name;//把實例11 化類時的實參傳遞給之前聲明好的變量 12 $this->salary = $salary;//把實例13 化類時的實參傳遞給之前聲明好的變量
黑馬程序員濟南中心 編著 } 15 } 16 class Teacher extends Member{ 17 public $edu;//聲明一個變量 18 //創建一個構造方法 19 function __construct($name,$salary,$edu){ 21 //$this->name = $name;22 //$this->salary = $salary;23 //將上面兩行的內容用下面一行類24 代替 //調用父類的構造方法,去完成一個26 共同屬性數據的初始化 parent::__construct($name,$salar28 y);29 //把實例化類時的實參傳遞給之前聲30 明好的變量
$this->edu = $edu;32 } 33 } 34 class Student extends Member{ 35 public $age;//聲明一個變量
黑馬程序員濟南中心 編著
//創建一個構造方法 37 function
__construct($name,$salary,$age){ 39
//調用父類的構造方法,去完成一個41 共同屬性數據的初始化
parent::__construct($name,$salary);//把實例化類時的實參傳遞給之前聲明好的變量
$this->age = $age;} } $t1 = new Teacher(“老師”,1000,“大學”);echo “
”;var_dump($t1);echo “
”;$s1 = new Student(“學生”,100,18);var_dump($s1);
黑馬程序員濟南中心 編著
不知道大家對今天講解的parent和self關鍵字學習的程度如何?。咳绻信d趣,歡迎來黑馬程序員濟南中心來詳細了解PHP~
黑馬程序員濟南中心 編著
第四篇:黑馬程序員_PHP_課程同步筆記day34:PHP類其他魔術方法
【黑馬程序員濟南】PHP類其他魔術方法
序列化:
就是將一個變量的“內存數據形式”,轉換為“硬盤數據形式”的過程。
分2步就可以:
1,$str = serialize($變量);//該函數將該變量數據,轉換為一個字符串
2,file_put_contents(“文本文件名”, $str);//將該字符串保存到該文件中。[PHP] 純文本查看 復制代碼 ? 01 5.5,'bbcc'=>true);13 $data3 = new A();
黑馬程序員濟南中心 編著 //開始轉換得到一個字符串 16 $str1 = serialize($data1);17 $str2 = serialize($data2);18 $str3 = serialize($data3);19 //開始寫入硬盤中 file_put_contents('./file1.txt',$str1);22 file_put_contents('./file2.txt',$str2);23 file_put_contents('./file3.txt',$str3);24
[align=left] 反序列化:
將已經存到硬盤的變量數據,轉換(恢復)到內存數據(變量)形式的過程。同樣分2步:
1,$str = file_get_contents(文本文件名);
//讀取出序列化之后所存儲的文件內容(就是字符串)
2,$變量 = unserialize($str);
//將該字符串恢復為變量(數據);
[PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著
02 //演示3中數據的序列化結果 03 class A{ 04 public $p1 = 1;05 protected $p2 = 2;06 private $p3 = 3;07 } 08
09 //開始從硬盤中讀取數據(字符串)10 $str1 = file_get_contents('./file1.txt');11 $str2 = file_get_contents('./file2.txt');12 $str3 = file_get_contents('./file3.txt');13 //開始轉換得到一個字符串 15 $data1 = unserialize($str1);16 $data2 = unserialize($str2);17 $data3 = unserialize($str3);18 var_dump($data1);20 var_dump($data2);21 var_dump($data3);結果為: float(1.1)
黑馬程序員濟南中心 編著
array(3){[0]=>string(2)“aa” [5]=>float(5.5)[“bbcc”]=>bool(true)} object(A)#1(3){[“p1”]=>int(1)[“p2”:protected]=>int(2)[“p3”:“A”:private]=>int(3)} __sleep():
該魔術方法是對一個對象進行“序列化”的時候,會被自動調用。
此時,在該方法中,我們就可以(而且必須)返回一個數組,該數組中含所有我們“想要”對該對象的屬性進行序列化的屬性名。[PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著 }
__wakeup()
該魔術方法是對一個對象進行“反序列化”的時候,會被自動調用。
此時,該對象的屬性值,就會恢復到“原來的數據”
但:如果某個屬性當時并沒有做序列化,則此時就不會恢復為原來對象的數據,而是恢復為該類中的初始數據; [PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著 $this->p1 = $p1;13 $this->p2 = $p2;14 $this->p3 = $p3;15 } 16 function __sleep(){ 17 return 18 array(“p1”,“p3”);19 } 20 function 21 __wakeup(){ 22 echo “對象蘇醒23 了。。”;24 } 25 } 26
$s1 = new S(11,12,13);$str = serialize($s1);var_dump($)
[align=left]
黑馬程序員濟南中心 編著
不知道大家對今天講的PHP類其他魔術方法相關技術學習的怎么樣?。坑惺裁匆蓡枤g迎來黑馬程序員濟南中心來咨詢喲~
黑馬程序員濟南中心 編著
第五篇:黑馬程序員_PHP_課程同步筆記day17:數組介紹
【黑馬程序員】PHP課程同步筆記day17:數組介紹
數組 1.數組的概念
數組是一組值的集合,變量是單個值的容器,而數組是多個值的容器 2.數組的分類
1.枚舉數組:數組的下標是從0開始的正整數
2.關聯數組:數組的下標可以是字符串
$arr = array(“db_host” => “localhost”, “db_user” => “root”, “db_pwd” =>”root”,);
3.混合數組:下標既有整型的,也有字符串的
$arr = array(“db_host” => “localhost”, “db_user” => “root”, “db_pwd” =>”root”, “黑馬程序員”, “濟南分?!?;
4.多維數組:數組的元素的值的類型是一個數組。數組套數組。數組元素的下標只能是正整數和字符串。數組元素的值,可以是任何類型,當然可以是數組。
黑馬程序員濟南中心 編著
$arr = array(Array(10,11,12,13), Array(20,21,22), Array(30,31), TRUE,NULL);3.數組的創建
a)使用array()來創建數組 $arr = array([$key=>]$value, [$key=>]$value, [$key=>]$value,.....);語法說明:
$key代表數組元素的下標,可以省略。
$key的類型可以是整型和字符型,如果$key省略,默認的數組應該是枚舉數組。$value代表數組元素的值,值可以是任何類型。“=>”重載下標,或者重新指定下標。多個數組元素之間用英文下的逗號隔開。b)使用[]創建數組的語法
語法1:$arr[] = $value
黑馬程序員濟南中心 編著
說明: 1)如果數組不存在,則會創建一個數組 2)第一個元素就是下標為0的元素 3)如果數組存在,則相當于添加一個新元素 4)新元素的下標,應該是最大整數下標+1 語法2: $arr[$key] = $value 說明:
1)同時指定下標,指定的下標是多少,就是多少。2)如果指定的數組不存在,也會創建一個數組 3)如果指定的數組存在,則添加一個新元素 $arr[] = 100;$arr[] = 200;$arr[5] = 500;$arr[“a”] = “abc”;多維數組
1、使用array()來創建多維數組
$arr = array(Array(10,11,12,13,14), Array(20,21,22,23), Array(30,31,32), Array(Array(40,41),黑馬程序員濟南中心 編著
Array(42,43)));
2、使用[]來創建多維數組
$arr[“name”] = “Mary”;$arr[“sex”] = “男”;$arr[“contact”][“tel”] = “11111111111”;$arr[“contact”][“qq”] = “11233321”;$arr[] = array(10,20,30);實例:用表格輸出二維數組 $arr = array(Array(“10010”,”Mary”,”大專”,”傳智專修學院”), Array(“10020”,”Kate”,”大?!?”傳智專修學院”), Array(“10030”,”James”,”大?!?”傳智專修學院”), Array(“10040”,”Kobe”,”大?!?”傳智專修學院”),);$str = “”;$str.= “
b)語法:print_r(mixed $expression)c)說明:如果給出的是string、interger或float,將打印變量值本身。如果給出的是array,將會按照一定格式顯示鍵和元素
2.Count()a)描述:統計數組有效數據的個數
b)說明:計算數組中的單元數目或對象中的屬性個數。c)語法:int count(mixed $var)d)參數:$mode是否統計多維數組中的個數 3.Unset()a)描述:刪除變量或數組元素或者對象屬性 b)語法:void unset(mixed $var)c)返回值:無
d)注意:如果刪除變量的話,只是刪除變量名稱和到值之間的指向。如果刪除數組元素的話,值會被刪除,而下標還在。如果刪除整個數組的話,而整個數組都不存在黑馬程序員濟南中心 編著
了。
實例:求一維數組中元素的平均值 $arr = array(1,2,3,4,5,6,7,8);$num = 0;$len = count($arr);For($i=0;$i<$len;++$i){ $sum += $arr[$i];} Echo “平均值為:”.$sum/$len;實例:求二維數組中元素的平均值 $arr = array(Array(10,11,12,13,14), Array(20,21,22,23), Array(30,31,32), Array(40,41), Array(50));$sum = 0;$len = 0;For($i = 0;$i 黑馬程序員濟南中心 編著 $len ++;} } Echo “平均值:”.round($sum/$len,2);實例:求一維數組中的最大值 $arr = array(9,2,3,45,5,7);$max = $arr[0];For($i=0;$i If($max<$arr[$i]){ 黑馬程序員濟南中心 編著 $max = $arr[$i];$max_index = $i;} //最小值 If($min>$arr[$i]){ $min = $arr[$i];$min_index = $i;} } //交換最大值和最小值的位置 $arr[$max_index] = $min;$arr[$min_index] = $max;數組遍歷:foreach 語法結構: Foreach($arr as [$key=>]$value){循環體代碼} 語法結構說明: $arr代表當前要遍歷的數組名稱 As是系統關鍵字 $key表示每一次取到元素的鍵名,可以省略 $value表示每一次取到元素的鍵值 如果數組指針指到數組的末端,則退出循環 實例:foreach遍歷一維數組 黑馬程序員濟南中心 編著 $arr = array(“name” => “Mary”, “sex” => “男”, “age” => 24);Foreach($arr as $key=>$value){ Echo “$arr[$key]=$value 黑馬程序員濟南中心 編著 } $str.=” 2.List()a)描述:把數組中的值(前幾個值)賦給一些變量 b)語法:array list(mixed $varname)c)舉例:list($name,$sex,$age)= array(“Kobe”,”男”,24,”高中”);i.說明:將數組中前三個元素的值,賦給list函數中的三個變量。 ii.數組中多余的值不需要 黑馬程序員濟南中心 編著 iii.要求數組必須是枚舉數組,下標必須是從0開始的正整數 iv.下標必須是連續的,中間不能斷檔。 黑馬程序員濟南中心 編著
”;} 實例:foreach遍歷二維數組 $arr = array(“a” =>array(“10010”,”Mary”,”男”,24), “b”=>array(“10020”,”Kate”,”女”,20), “c” => array(“10030”,”Kobe”,”男”,40));$str = “”;$str.=””;Foreach($arr as $arr2){ $str.=”
”;Echo $str;實例:foreach 中的$value引用傳地址 $arr = array(1,2,3,4,5,6,7,8);Foreach($arr as &$value){ $value *=2;} Var_dump($arr);數組操作函數 1.each()a)描述:返回數組中當前的鍵/值對(數組元素)并將數組指針向前移動一步 b)語法:array each(array &$array)c)返回值:返回array數組中當前指針位置的鍵/值對并向前移動數組指針。鍵值對被返回四個單元的數組。單元0和key包含有數組單元的鍵名,1和value包含有數據。”;Foreach($arr2 as $value){ $str.=” ”;$value ”;} $str.=”