在PHP中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。
PHP是一门松散类型的语言,不必向PHP声明变量的数据类型,PHP会自动把变量转换为自动的数据类型(与Python相似,鸭子模型)
四种标量类型:布尔(Boolean)、整型(Integer)、浮点型(Float)、字符串(String)、数组(Array)、对象(object)、NULL(空值)
1、布尔值
1 <?php 2 $man = "男"; 3 $flag = $man == "男"; // "==" 比较运算符 4 echo $flag ; 5 echo "<br />" ; 6 var_dump($flag); // "var_dump" 给我们表明了 "$flag" 为布尔类型 7 8 ?> 9 运行结果: 10 1 11 bool(true)
2、整型
1 <?php 2 $data_int1 = 123; 3 echo $data_int1; //123 4 var_dump($data_int1); //int(123) 5 echo "<br />"; 6 $data_int2 = -123; 7 echo $data_int2; //-123 8 echo "<br />"; 9 $data_int3 = 0123; 10 echo $data_int3; // 定义的是八进制,输出的是十进制83 11 echo "<br />"; 12 $data_int4 = 0x123; //定义的是16进制,输出的是十进制291 13 echo $data_int4; 14 echo "<br />"; 15 ?>
使用echo可以原样输出变量值,使用var_dump可以输出变量类型
3、浮点类型
1 <?php 2 $num_float = 1.234; //小数点 3 $num_float = 1.2e3; //科学计数法,小写e 4 $num_float = 7.0E-10; //科学计数法,大写E 5 ?> 6 7 <?php 8 $num_float1 = 1.234; 9 echo $num_float1; 10 echo "<br />"; 11 $num_float2 = 1.2e3; 12 echo $num_float2; 13 echo "<br />"; 14 $num_float3 = 7.0E-3; 15 echo $num_float3; 16 echo "<br />"; 17 ?>
输出结果:
1.234
1200
0.007
4、字符串
字符串可以有单引号、双引号、Heredoc结构形式来表示
单引号里可以放入双引号,双引号里也可放入单引号
当单引号和双引号里分别有变量时,例如:
1 $love = "I love you"; 2 <?php 3 $love = "I love you!"; 4 $string1 = "慕课网,$love"; 5 $string2 = '慕课网,$love'; 6 echo $string1; 7 echo "<br />"; 8 echo $string2; 9 ?>
输出结果:
慕课网,I love you! 双引号会输出源字符串内容,
慕课网,$love 单引号会把变量名输出
对于较长的字符串来说,可以用Heredoc来表示
1 <?php 2 $string1 = <<<GOD //GOD 是标识符可以按照自己的意愿指定 3 我有一只小毛驴,我从来也不骑。 4 有一天我心血来潮,骑着去赶集。 5 我手里拿着小皮鞭,我心里正得意。 6 不知怎么哗啦啦啦啦,我摔了一身泥. 7 GOD; //GOD 是标识符,结束需要占一行,且前后不能有空格 8 echo $string1; 9 ?>
5、数组
在PHP中数组分三种:
数值数组,即带有数字id键的数组
1 如:$cars=array("Volvo","BMW","Toyota"); 2 3 使用for循环遍历数值数组 4 <?php 5 $cars = array("Volvo","BMW", "Toyota"); 6 $carslength = count($cars); 7 8 for($x = 0;$x < $carslength;$x++){ 9 echo $cars[$x]; 10 } 11 ?>
关联数组
$age = array("Peter" => "35", "Ben" => "39", "Joe" => "50");
关联数组取值 $age["Peter"] $age["Ben"] $age["Joe"]
使用foreach循环遍历关联数组
1 foreach($age as $key => $value){ 2 3 echo $key.$value; 4 }
多维数组
PHP数组排序
数值数组
sort() 对数组进行升序排序
1 <?php 2 sort($cars); 3 $cars = array("Volvo","BMW","Toyota"); //按照首字母排序 4 print_r($cars); 5 ?>
rsort() 对数组进行降序排序
1 <?php 2 rsort($cars); 3 $num = array(1,2,8,9,3,8); 4 print_r($cars); 5 ?>
关联数组
升序排序
$ age = array(“Peter”=>“35”,“Ben”=>“37”,“Joe”=>“43”);
asort() 根据关联数组的value,进行排序
<?php asort($age); print_r ($age); ?>
ksort() 根据关联数组的key, 进行排序
<?php asort($age); print_r ($age); ?>
降序排序
arsort() 根据关联数组的value,进行降序排序
<?php arsort($age); print_r ($age); ?>
krsort() 根据关联数组的key,进行降序排序
<?php krsort($age); print_r ($age); ?>
数组运算符
x+y 数组合并
x == y 如果x, y 具有相同的键值对,则返回true
x === y 如果x 和 y 具有相同的键值对,且顺序相同,类型相同,则返回true
x != y 如果不相等,则返回true
x !== y 不恒等,则返回true
6、PHP第一种特殊类型资源——NULL
NULL是空类型,对大小写不敏感,NULL类型只有一个取值。
表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL。
1 <?php 2 error_reporting(0); //禁止显示PHP警告提示 3 $var; 4 var_dump($var); 5 $var1 = null; 6 var_dump($var1); 7 $var2 = NULL; 8 var_dump( $var2); 9 $var3 = "节日快乐!"; 10 unset($var3); 11 var_dump($var3); 12 ?>
7、PHP第二种特殊类型资源
资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。
我们可以对资源进行操作(创建、使用和释放)。任何资源,在不需要的时候应该被及时释放。
如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽
<?php $file=fopen("f.txt","r"); //打开文件 $con=mysql_connect("localhost","root","root"); //连接数据库 $img=imagecreate(100,100);//图形画布 ?> <?php //首先采用“fopen”函数打开文件,得到返回值的就是资源类型。 $file_handle = fopen("/data/webroot/resouce/php/f.txt","r"); if ($file_handle){ //接着采用while循环一行行地读取文件,然后输出每行的文字 while (!feof($file_handle)) { //判断是否到最后一行 $line = fgets($file_handle); //读取一行文本 echo $line; //输出一行文本 echo "<br />"; //换行 } } fclose($file_handle);//关闭文件 ?>
8、关于类型的比较
对PHP变量进行比较,包括松散和严格比较
" == " 只比较值,不比较类型
<?php if(42 == "42"){ echo "值相等"; } ?>
"===" 比较值 和 类型 ,两者都相等才返回true
<?php if(42 === "42") { echo '2、类型相等'; } else { echo '3、不相等'; } ?>