第一篇:黑马程序员_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关键字学习的程度如何啊?如果有兴趣,欢迎来黑马程序员济南中心来详细了解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类其他魔术方法相关技术学习的怎么样啊?有什么疑问欢迎来黑马程序员济南中心来咨询哟~
黑马程序员济南中心 编著
第五篇:黑马程序员_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.=”