标记风格(4种)
标记的作用:便于和HTML代码区分开来
XML风格
<?php
echo "这种就是XML风格";
?>
脚本风格
<script language="php">
echo "这就是脚本风格";
</script>
简短风格
<? echo "这种就是简短风格"; ?>
ASP风格
<% echo "这种就是ASP风格"; %>
简短风格和ASP风格需要在php.ini配置文件中开启之后才可以使用。将 short_open_tag 和 asp_tags 都设为 on ,保存成功后重启阿帕奇Apache。 
注释(3种)
程序执行时,解释器会忽略掉注释部分。
单行注释
$a = 1;
单行注释的注释内容中不要出现 ?> 标志,不然解释器会认为脚本结束,进而不会执行后面的PHP代码。
<?php
echo "这里被执行了";
echo "这里的代码不执行了";
?>
 从上面的图片可以看出,第二个 echo 后面的代码被当成HTML代码原封不动的输出了。
多行注释
多行注释分为块注释和文档注释。
块注释
文档注释
class Tools{
}
多行注释不允许嵌套使用。  可以看到,嵌套使用的时候,最下面的多行注释结束符失效了。
#风格注释
echo "这是#风格注释";
数据类型(8种原始类型)
包括4种标量类型,2种复合类型,2种特殊类型。
标量类型(4种)
类型名称 | |
---|
布尔型 | boolean | 字符串型 | string | 整型 | integer | 浮点型 | float |
布尔型(boolean)
布尔类型只有两个值 true 和 false ,这两个值也叫做布尔值,是php的关键字,设定一个布尔型变量,只需要将布尔值赋值给变量即可。
$bool = true;
在PHP中,所有变量均以美元符号 $ 符开头,无论是声明变量还是调用变量,都应该使用 $ 。
字符串型(string)
字符串是连续的字符序列,由数字、字母、符号组成。字符串中的每个字符占一个字节。
字符串有 3种 定义方式:
- 单引号(’)
- 双引号(")
- 定界符(<<<)
单引号和双引号定义字符串的区别: 双引号定义字符串,程序执行的时候,会解析字符串里面的变量,将其替换为实际内容。 单引号则将字符串中的变量当作普通字符输出。
$a = 1433223;
echo $str1 = "输出变量a:$a";
echo "<br/>";
echo $str2 = '输出变量a:$a';
 使用双引号定义字符串,要注意(”)和($)这些符号的使用,在字符串中这些符号都需要通过转义符(\)来显示,否则会发生错误。 使用单引号定义字符串,只需要对单引号进行转义,其他符号都可以直接输出。
echo "$小明说:\"你好啊\"";
echo "<br />";
echo '$小红说:"你也好啊"';
 从上面的代码执行结果可以看出,用双引号定义字符串的时候,如果在$符前面没有存在转义字符,解释器会将$后面的字符串当作一个变量来解析。如果想要显示$符号,则要在其前面加上转义符号。而在单引号定义的字符串中并不存在这些问题。
综上所述,平时我们定义字符串的时候,尽量选择使用单引号,因为省去了解释器寻找和解析变量的消耗。当然,实际情况还是按需定义,存在就有它的意义,并不绝对。
定界符
$string = <<< str
第一行<br/>
第二行<br/>
第三行
str;
echo $string;

其中,str为指定的标识符。 结束标识符必须单独另起一行,且前后不允许有空格,标识符前后不允许有其他的字符或者符号,不然就会报错。
整型(integer)
八进制整型:数字前面必须加上 0 ,若八进制中出现了非法数字(8和9),则后面的数字都会忽略(有些版本的PHP会报错)。
十六进制:必须以 0x 开头。
$num_10 = 123;
$num_8 = 0123;
$num_16 = 0x123;
echo $num_10.'<br/>';
echo $num_8.'<br/>';
echo $num_16.'<br/>';
 整型溢出 给定的数值超出了int型所能表示的最大的范围,会被当作float型来处理,这种情况就叫做整型溢出。表达式最后的运算结果超出了范围,也会返回float型。
$num1 = 999;
$num2 = 9999999999999999999999999999999;
echo $num1.'<br/>';
echo $num2;

浮点型(float)
浮点型提供的精度比整型的要大得多(这就是为什么超出了整型了范围会转成浮点型的原因了)。
浮点型数据书写格式(两种)
- 标准格式:3.14、-999
- 科学计数法格式:3.5E3、849.72E-9
浮点型数据 只是一个近似值 ,所以尽量避免浮点型数据之间比较大小,因为得到的结果往往也是不准确的。
复合数据类型(2种)
数组(array)
数组是一组数据的集合,它把一系列数据组织起来,形成一个可操作的整体。数组中可以包含很多数据,如标量数据、数组、对象、资源等等。
数组中的每个数据叫做一个 元素 ,元素包括索引(键名)和值两个部分。索引可以是数值或者字符串,元素的值可以是多种数据类型。
数组定义格式
$arA = array('val1','val2','val3');
$arB = ['val1','val2','val3'];
$arC = array(
'key1'=>'val1',
'key2'=>'val2',
'key3'=>'val3'
);
$arD['name'] = 'Maccx';
$arD['age'] = 16;
print_r($arA);echo '<br>';
print_r($arB);echo '<br>';
print_r($arC);echo '<br>';
print_r($arD);
 声明数组后,数组中的元素个数可自由更改,只要给数组赋值,数组的长度就会自动增加。
对象(object)
对象是类的实例,使用 new 命令来创建。
特殊数据类型(2种)
资源(resource)
资源是一种特殊的变量,又叫做句柄,保存了到外部资源的一个引用。
外部资源: 像图片、文本文件、数据库等这些相对于PHP文件就叫做外部资源,资源数据类型就是保存了对这些外部资源的引用,它的本质还是一个变量。
$fp = fopen('demo1.txt','rw');
var_dump($fp);
fclose($fp);
上面代码中。变量fp就是资源变量。  打印fp变量的结果如上图,其中的resource代表fp的类型,里面的3叫做资源ID,stream代表的是资源的类型。 这里先了解这么多,后面再详细了解资源。
资源是通过专门的函数来创建和使用的。例如上面例子中的fopen()函数。
在使用资源的时候,系统会自动启用垃圾回收机制,释放不再使用的资源。
空值(null)
空值表示没有为该变量设置任何值,空值不区分大小写,null和NULL是一样的。 被赋予空值的情况有下面3种:
- 变量未赋任何值
- 变量被赋予空值
- 变量被unset()函数处理过
isset($val);
unset($val);
is_null($val);
数据类型转换
类型强制转换
变量前加上用括号括起来的类型名称即可。
转换类型 | 说明 |
---|
(boolean) | 转换成布尔类型 | (string) | 转换成字符串类型 | (integer) | 转换成整型 | (float) | 转换成浮点型 | (array) | 转换成数组类型 | (object) | 转换成对象类型 |
字符串转整型的时候: 以数字开头,则截取到非数字位,否则输出0。
$str1 = '123你好哎呀';
$str2 = '你好啊321';
echo (integer)$str1;
echo '<br/>';
echo (integer)$str2;
 布尔型转整型的时候: false为0,true为1。
$bool1 = true;
$bool2 = false;
echo (integer)$bool1;
echo '<br/>';
echo (integer)$bool2;
 浮点型转整型的时候: 舍去小数部分。
$float = 3.1415926535;
echo (integer)$float;
类型转换函数 settype()
语法: bool settype(mixed var, string type) 参数type有7个值可选:boolean、float、integer、array、null、object、string。 转换成功后返回true。
使用强制类型转换不会影响原变量。 使用类型转换函数会影响原变量。
$float1 = 3.1415926535;
$float2 = 7.23;
echo (integer)$float1;
echo '<br/>';
echo $float1;
echo '<br/>';
echo settype($float2,'integer');
echo '<br/>';
echo $float2;

检测数据类型
PHP内置了检测数据类型的系列函数。可对不同类型的数据进行检测,判断其是否属于某个类型,符合则返回true,否则返回false。
函数名称 | 作用说明 |
---|
is_bool() | 检测变量是否为布尔型 | is_string() | 检测是否为字符串 | is_float() 、is_double() | 检测是否为浮点型 | is_inteser()、is_int() | 检测是否为整型 | is_null() | 检测是否为空值 | is_array() | 检测是否为数组 | is_object() | 检测是否为对象 | is_numeric() | 检测变量是否为数字或者由数字组成的字符串 |
$num = 123;
echo is_int($num);
|