PHP变量
1)不需要提前定义,使用时直接赋一个值即可。
2)PHP的变量的命名规则,跟JS一样,允许的字符有:大小写英文字母、0-9、_
3)PHP的变量必须以美元符号$开头;例如:$name=“周更生”;
4)PHP的变量区分大小写
5)PHP的关键字和函数名,不分区大小写,建议一律用小写;
6)PHP对于多个单词构成的变量名
下划线方式:$get_user_name
骆峰命名方式:$getUserName
7)同一变量,多次定义,后面的变量会覆盖前面的同名变量
<?php
$name; //变量定义了,但没有赋值
var_dump($name); //返回一个NULL
?>
PHP的数据类型
1)基本数据类型(标量数据类型): 整型(int)、浮点数(float)、布尔型(boolean)、字符型(string)
2)复合数据类型:对象(obj)、数组(array)
PHP中的对象,只有自定义对象,没有所谓的“内置对象”。
面向对象编程,MVC的架构。
3)特殊数据类型:资源型、NULL
资源型:主要访问或操作“外部”的数据或文件时,将返回一个“资源型”的标识。
如:连接MySQL数据库时,会返回一个“资源”标识符,说明数据库已经连通。
只有数据库连通以后,才能做“后续工作”:选择数据库、设置字符集、增、删、改、查。
NULL:一个变量定义了,但没有赋值。如果你使用“unset()”删除了变量的值,则同样返回NULL
$school = NULL;
unset($name);
PHP常量
常量:就是一个永远不变的量,就叫“常量”。比如:连接数据库的“主机名”、“用户名”、“密码”、ICP备案号
第一步:定义常量
格式:define(name,value);
举例:define(“DB_HOST”, “192.168.3.100”);
define(“WEB_ICP”,“京1102342312312”)
define(“WEB_NAME”,“南宁有限公司公司”)
define(“WEB_ADDRESS”,“南宁市青秀区青秀万达”)
第二步:判断常量
格式:defined(name)
if(defined(“DB_HOST”))
{
echo “MySQL的主机IP地址:”.DB_HOST;
}
2.for循环语句
1、语法格式:
for(变量初始化;条件判断表达式;变量更新)
{
循环执行的程序代码;
}
2、举例说明
//输出1-100间,所有的偶数,的和
$sum = 0;
for($i=1;$i<=100;$i++)
{
//找出1-100间所有的偶数
if( $i % 2 == 0 )
{
//这里出来的数,都是偶数
$sum += $i;
}
}
3.赋值传值和引用传址
1、赋值传值
所谓的“赋值传值”,就是将一个变量的值,“拷贝”一份传给另一个变量。
那么,这两个变量没有任何联系,是相互独立的。
在PHP中,默认的传值方式就是“赋值传值”,比如:基本数据类型、数组、NULL
$a = 100;
$b = $a; // 将变量$a的值,传给了变量$b
$b = 200; // 对变量$b重新赋值
echo $a; //$a = 100 ,变量$a的值并没有改变
2、引用传址
所谓的“引用传址”,就是将一个变量的“地址”,“拷贝”一份传给另一个变量。
因此,这两个变量指向的是同一个“地址”,或者是同一个“地方”,相当于一个人有两个名字:大名、小名。
“引用传址”中两个变量,只要有一个变量的值修改了,则另一个变量的值也跟着变。
这两个变量是有联系的,不是独立的。
在PHP中,引用传址的数据类型是:资源、对象。
注意:在PHP中,任何数据类型都可以“引用传址”。通过一个“&”来“引用”变量。
//引用传址
$a = 100; //定义变量,并赋值
$b = &$a; // 用&号将变量$a的“地址”,复制一份,传给了变量$a
$b = 200; //对$b重新赋值
echo $a; // $a = 200,$a和$b指向了“同一个地方、地址”
4.数组的概念
数组是一组数的集合。
假设:一个老太太,养了50000只鸡,鸡一重量分别是:1.5斤、2斤、2.5斤、3.0斤、50斤,……,求所有鸡的平均重量?
$hen1 = 1.5;
$hen2 = 2;
$hen3 = 2.5;
$hen4 = 3;
$hen5 = 50;
$sum = $hen1+$hen2+$hen3+$hen4+$hen5;
$avg = $sum/5;
//用数组来实现
$arr = array);
$sum = array_sum($arr);
$count = count($arr);
$avg = $sum/$count
2、数组分类
1)枚举数组(数字索引数组):下标是非负整数。$arr[0]=100
2)关联数组(字符下标):下标是字符串。$arr[“name”]=“张立峰”
3)混合数组:即有字符下标,也有数字下标。$arr[“contact”][0] = “”
4)多维数组:数组的元素,还是一个数组。
3、数组的创建
1)使用[ ]符号来创建数组
$arr[0] = 0; //JS中创建数组 var arr = [1,2,3,4];
//如果[]中没有指定下标,则创建一个最大数值下标+1的元素
$arr[] = 1; //JS中的下标必须有值,不能为空
$arr[10]= 10;
$arr[] = 11; //下标为11
$arr[“name”]=“张三”;
$arr[] = 100; //下标为12
//使用print_r()直接可以打印输出所有的数组元素
print_r($arr);
<?php
//创建数组
$arr[] = 0;
$arr[] = 1;
$arr[] = 2;
$arr["name"] = "张三";
$arr["sex"] = true;
$arr["age"] = 30;
$arr[99] = 99;
$arr[] = "北京大学";
//通过print_r()测试数组
dump($arr);
//定义函数
function dump($arr)
{
echo "<pre>";
print_r($arr);
echo "</pre>";
}
?>
2)使用array()函数来创建
格式一:$arr = array(value1,value2,value3,value4,……);
举例:$arr = array(34,34,65,67,78,”abc”,true,NULL);
格式二:$arr=array(Key=>value,key=>value,……);
说明:
Key就是指下标,可以是字符下标,也可以是数字下标;
Value就是数组元素的值,可以是任何类型;
=>叫“重载下标”符号,重新指定一个下标;
举例:
$arr = array(
“name”=>”张三”,
“sex”=>“男”
“isMarried”=>true,
10=>100, //数字下标从10开始
200,300 //200的下标为11,300的下标为12
);
5.数组的常用函数
print_r()
含义:打印变量的信息,如果是基本数据类型的变量,直接输出值,如果是数组,则以一定的格式来输出
格式:bool print_r($var)
返回值:布尔值
unset()
含义:删除一个数组元素、一个变量、一个对象的属性。
格式:unset($var)
注意:如果删除一个数组元素,则数组还在下标依然保留(跟JS一样delete)
如果使用unset删除一个数组,则数组中的所有数据消失,并且数组的索引会重建
foreach()
含义:遍历循环数组,只能应用于数组。
格式:
foreach($arr as [$key=>]$value)
{
echo $value;
echo $arr[$key];
}
注意:$key即可以是数字,也可以是字符。
count()
含义:统计数组元素的个数,默认情况下只统计一维数组。
格式:int count($arr[,mode])
参数:mode为可选,如果设为1,则统计多维数组
array_reverse()反转数组中的元素
array_shift():删除数组中的第一个元素,且长度减1
array_pop():删除数组中的最后一个元素,且长度减1
array_unshift():在数组的开头增加一个元素,长度加1
array_push():在数组的末尾增加一个元素,长度加1
说明:上述四个对数组操作的函数,返回值是“删除或增加”的那一个元素的值。
6.
7.函数的概念
函数就是将一段常用的代码(封装)进行命名。
假设:我们求以下N个数组中的最大值和最小值
$arr1 = array(1,2,3,4);
$arr2 = array(2,3,2,1);
$arr3 = array(5,6,4,2);
……
8.语法结构
function functionName([参形,参形2,参形3,……])
{
函数功能的代码;
[return 值];
}
语法结构的说明:
1)function是关键字,在PHP中,不区分大小写;
2)functionName是函数的名称,命名规则跟变量一样,但前面不加“$”符号;
3)定义函数时的参数叫“形式参数”,调用函数时的参数叫“实际参数”
4)函数可以没有参数,但小括号不能省略;
5)函数中,可以使用return语句向调用者,返回一个值;return语句执行后,会立即结束函数的运行,因此return语句一般放在定义函数的最后;
6)函数定义后,必须在某个地方调用;只定义函数,函数是不会执行的,只有调用函数才会执行;
7)函数不能存在同名函数(不支持函数的重载),但在JS中可以;
9.函数参数
(1)值传递(复制)
默认参数传递,是将一个变量的值,复制一份传递给函数了。
showInfo(“周更生”); //调用函数
function showInfo($name)
{
echo “$name 的年龄是30岁”;
}
(2)引用传递
引用参数传递,是将一个变量的“地址”,传递给函数了。可以在函数中,直接修改变量的值。修改完后,不管是函数内,还是在函数外,这个变量都会发生改变。
在定义函数时,在参数前加一个“&”号,就是引用外部的变量地址。
(3)默认参数传递
在定义函数时,可以指定默认的参数(给参数赋一个默认的值)。
默认参数,必须放在普通参数的右边。
function showInfo($who,$sport=“打游戏”)
{
echo “$who 正在 $sport”;
}
//调用函数
showInfo(“张三”); //$result = 张三正在打游戏
showInfo(“李四”,”上网”); //$result = 李四正在上网
10.函数变量的作用域:全局变量和局部变量
JS中在函数外定义的变量叫“全局变量”,“全局变量”可以在函数内使用。
JS中的局部变量只能在函数内使用。
在PHP中,在函数外定义的变量,在函数内不能访问;当然,函数内的变量,在函数外也不能访问。
在函数中,使用关键字global来声明为“全局变量”,这样后,在函数内外都能访问。
$name = "张三";
showInfo();
//输出$name的值
echo $name;
//定义函数
function showInfo()
{
//声明为全局变量
global $name;
$name = "张三";
echo "$name 的年龄是30岁!<br>";
}
11.日期时间函数
date()函数
在PHP中,输出日期时间的相关信息,只需要使用date( )函数。
格式:string date(string format[,int timestamp])
参数:
format:是指输出的日期和时间的格式字符,比如:date(“Y-m-d H:i:s”)
timestamp:是可选项。如果省略,以当前时间为准(1970年1月1日到现在的秒数),也可以自己定义一个timestamp。
举例:
echo date("Y年m月d日 H:i:s z l");
time()今天距离Unix纪元(1970年1月1日)
mktime()根据指定的日期时间信息,得到距离Unix纪元过去了多少秒
格式:int mktime([hour][,minutes][,seconds][,month][,day][,year])
说明:
参数的顺序,必须是“时分秒月日年”
参数可以从右向左省略,省略的部分用当前时间的对应部分来代替。
返回值:是一个整数,距离Unix纪元过去了多少秒
举例:mktime(0,0,0,10,20,1980)
//计算:张三今天多大了?
//出生日期:1980-10-20
//(1)先求出今天距离Unix纪元过去了多少秒
$today = time();
//(2)出生日期距离Unix纪元过去了多少秒
$yestoday = mktime(0,0,0,10,20,1980);
//(3)求两个时间的差
$result = ceil(($today - $yestoday)/(60*60*24*365));
echo "张三今年{$result}岁了!";