1)Hyper textpreprocessor 超文本预处理器
借鉴的语言:C语言,Java语言,Perl语言和PHP自创语法
2)PHP是服务器端语言
服务器端语言:PHP,python
前段语言:JavaScript
3)PHP语言可以嵌套Html语言中使用
4)PHP是用于动态内容和数据库交互的最优秀的语言
php1.0 1994
php2.0 1995
php3.0 1997
php5 2000
php7.0 2015.12
hph7.1 2016.11
目前企业采用PHP版本为php5.5版本
php3.5版本之前是面向过程
php3.5版本之后是面向对象
总的来说,php是一门面向对象的脚本语言
1)开源
2)免费
3)基于服务器端
4)可以嵌入到HTML中
5)效率高
6)图像处理
7)面向对象(oop技术)(PHP4以后)
1)简短
<?
php代码
?>
2)script风格
<scriptlanguage = "php">
php代码
</script>
3)asp风格
<%
php代码
%>
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> <?php echo "Hello world"; ?> <script language="php"> echo "god"; </script> </html>
echo(),print(),printf(),sprint()
其中,echo,print,printf本身就是函数,括号可以省略
1)echo与print比较
功能几乎是一样的,但是echo运行速度要比print稍微快,echo 可以一次输出多个值(基本数据类型),多个值之间用逗号隔开
输入多个值时,echo不能加(),单个值可加可不加
echo没有返回值,但是print() 只能打印一个值,括号可加可不加,并且有返回值(整数)
echo()和print()只能打印基本数据类型
2)printf与sprintf比较
printf()与sprintf()都是格式化输出,是C语言的方法
不同点:printf有返回值且为整数sprintf有返回值且为字符串
printf直接向浏览器输出,sprintf需要echo将其返回值输出
3)print_r()与var_dump()比较
print_r()简单打印 既可以打印基本数据类型,又可以打印复合数据类型
var_dump() 即可以打印基本数据类型又可以打印复合数据类型
注意:在打印数组或对象数据类型时采用print_r()和var_dump()
4)格式化输出
%f 浮点数,显示为浮点数
%d 十进制数,显示为整数
%s 字符串
%u 整数(无符号整数)
%x 小写16进制
%X 大写16进制
%o 八进制
%b 二进制
%c 字符整数
1)标识符可以是任意长度,由数字,字母,下划线组成
2)不能以数字开头
3)区分大小写
4)变量名和函数名重名
5)$是变量的标识符,所有变量必须以$开头,$符与变量是一个整体,不可分开
1)基本数据类型
Inter 整形
Float 浮点型
String 字符串
在php中当中字符串表示方式:
单引号'';原样输出,服务器是不会对单引号中的内容进行解析;
双引号"";服务器会对双引号中的内容进行解析;
界定符<<<
连接符用点.表示
Boolean 布尔值
在php当中出现false情况:null,未赋值的变量,空数组,0
其他情况都为true
2)复合数据类型
Array 数组
数组定义:
$arr1 = array(1,2,3,4,5); $arr2 = array("name"=>"张三","age"=>"26","weight"=>"60Kg"); $arr3["name"] = "张三";$arr3["age"] = "25"; print_r($arr5);//判断正确Array ( [name1] => Z [name2] => H ) var_dump($arr5);//array(2) { ["name1"]=> string(1) "Z" ["name2"]=> string(1) "H" }
Object 对象
3)特殊数据类型
resource 表示指针
含义:句柄(保存到外部资源的一个引用)
作用:在使用资源时,系统会自动启动垃圾回收机制,释放不再使用的资源,避免内存消耗
null 空类型,不区分大小写
1)整型转换(interger)
$Int = 12.5; $Int1 = (integer)$Int;//12
2)字符串转换(string)
$st = (string)$Int1; echo is_string($st);//1为true
3)布尔转换(boolearn)
检测布尔类型:(is_boolean)
4)浮点转换(float)
检测浮点型:is_float()
5)数组转换(array)
检测数组类型is_array()
$Str1 = "1234"; $arr = (array)$Str1; var_dump($arr);//array(1) { [0]=> string(4) "1234" }
6)对象转换(object)
检测是否为对象:is_object();
7)空类型检测is_null()
8)检测是否为数字组成的字符串is_numeric()
1)if语句
if($a == 12){ echo "12"; } else { }
if($a == 12){ echo "12"; } elseif($b == 13) { }
2)switch语句
switch (表达式){ case 1: { break; } case 2: { break; } default: { break; } }
3)while语句
switch (表达式){ case 1: { break; } case 2: { break; } default: { break; } } do{ }while($b == 1);
1)rand(min,max);
2)mt_rand(min,max);
区别:后者比前者快
number_format(number,小数点位数,用作小数点的字符串,千位分隔符)
$money = 123456789; $m = number_format($money,2,".",","); echo $m."<br/>";//123,456,789.00
绝对值函数abs()
向下取整函数floor()
向上取整函数ceil()
四舍五入函数round()
求数组最大值函数$a5 =max([1,2,3,45,6,7]);//45
求数组最小值函数$a6 =min([1,2,3,45,6,-7]);//-7
当数组中的key值不是默认数字的时候,遍历数组只能用foreach()
$arr1 = array("name"=>"张三","age"=>"30","weight"=>"70kg"); foreach($arr1 as $value){ echo $value." ";//张三 30 70kg }
for循环遍历
$arr2 = [1,2,3,4,5]; for ($i = 0;$i < 5;$i ++){ echo $arr2[$i]." ";//1 2 3 4 5 }
二维数组遍历
$arr5 = [["name"=>"zhangsan","age"=>"18"],["name"=>"lisi","age"=>"20"],["name"=>"wangwu","age"=>"30"]]; foreach ($arr5 as $num){ foreach($num as $value){ echo $value." "; } echo "<br/>"; }
正向排序(从小到大):sort(),asort(),ksort(),非数字类型一般用asort,按key值排序用ksort
反向排序(从大到小):rsort(),arsort(),krsort()
$arr6 =[1,51,45,163,178,453]; sort($arr6); print_r($arr6);//Array ( [0] => 1 [1] => 45 [2] => 51 [3] => 163[4] => 178 [5] => 453 ) echo "<br/>"; rsort($arr6); print_r($arr6);//Array ( [0] => 453 [1] => 178 [2] => 163 [3] => 51[4] => 45 [5] => 1 ) echo "<br/>"; $arr7 =["name"=>"Z","age"=>"H","weight"=>"K"]; asort($arr7); print_r($arr7);//Array ( [age] => H [weight] => K [name] => Z ) echo "<br/>"; arsort($arr7); print_r($arr7);//Array ( [name] => Z [weight] => K [age] => H ) echo "<br/>"; $arr8 =["A"=>"1","C"=>"9","B"=>"5","D"=>"4"]; ksort($arr8); print_r($arr8);//Array ( [A] => 1 [B] => 5 [C] => 9 [D] => 4 ) echo "<br/>"; krsort($arr8); print_r($arr8);//Array ( [D] => 4 [C] => 9 [B] => 5 [A] => 1 )
array_conmbine(array1,array2);
创建一个数组,array1当key;array2当value
返回的是一个新创建的数组
$arr9 = ["A","B","C","D"]; $arr10 = ["1","22","333","4444"]; $arr11 = array_combine($arr9,$arr10); var_dump($arr11);//array(4) { ["A"]=> string(1) "1" ["B"]=> string(2) "22" ["C"]=> string(3) "333" ["D"]=> string(4) "4444" }
array_count_values(array)
返回值是统计后的结果数组
$arr13 = ["A","B","A","N","A","C"]; $arr14 = array_count_values($arr13); var_dump($arr14);//array(4) { ["A"]=> int(3) ["B"]=> int(1) ["N"]=> int(1) ["C"]=> int(1) }
array_diff(array1,array2);
返回一个结果数组,array1中array2没有的值
$arr16 = [1,2,3,3]; $arr17 = [4,5,6]; $arr18 = array_diff($arr16,$arr17); var_dump($arr18);//array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(3) }
array_flip(array)返回的是一个数组
$arr19 = ["A"=>"Z","B"=>"Z","C"=>"f"]; $arr20 = array_flip($arr19); var_dump($arr20);//array(2) { ["Z"]=> string(1) "B" ["f"]=> string(1) "C" } //注意:如果一个数组中的值出现多次,该方法会将最后一个重复的值的Key保留
in_array(要检测的值,原数组);返回一个boolean值
$arr21 = [12,23,"name","S"];echo in_array("name",$arr21);//1
array_merge(array1,array2,......); $arr22 = [1,2,"name"=>"Z"]; $arr23 = [45,"name"=>"H"]; $arr24 = array_merge($arr22,$arr23); var_dump($arr24);//array(4) { [0]=> int(1) [1]=> int(2) ["name"]=> string(1) "H" [2]=> int(45) } //如果两个数组中有key一样,则后面一个数组的Key会覆盖前一个数组的Key值
array_keys() 返回一个新的数组
$arr25 = [1,2,"name"=>"Z"]; $arr26 = array_keys($arr25); var_dump($arr26);//array(3) { [0]=> int(0) [1]=> int(1) [2]=> string(4) "name" }
array_unique(array)返回是处理后的一个数组
$arr27 = [1,2,3,4,4,3,2,1]; $arr28 = array_unique($arr27); var_dump($arr28);//rray(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) }
unset(要删除的一个数组)
unset($arr28); var_dump($arr28);//报错,因为数组已被删除