变量的数据类型分为强数据类型和弱数据类型。 若是一个变量的类型取决于存放值的类型,这种语言称为弱数据类型语言。php
若是声明变量是A类型,就不能存放B类型的数据,这种语言称为强数据类型语言。 PHP和js都是弱数据类型。mysql
类型 | 描述 |
---|---|
整型integer | 一个没有小数的数字。 echo PHP_INT_MAX 整型最大值 |
浮点数float | 存放整数和小数 |
布尔型boolean | true/false |
字符串string | 双单引号字符串 |
浮点数详解: 因为浮点数转成二进制是乘2正向去整,可能会一直循环下去。全部浮点数保存的值是近似值。算法
不能用浮点数数作比较sql
var_dump(0.9 == (1-0.1)); //bool(true)
var_dump(0.1==(1-0.9)); //bool(false)
复制代码
若是要比较浮点数经过数组
*bccomp(值1,值2,比较的小数位数)*函数去比较,bash
若是两个数相等就返回0,值1>值2返回1,不然返回-1数据结构
echo bccomp(0.1,(1-0.9),5),'<br>'; //0
echo bccomp(1.123,1.124,2),'<br>'; //0
echo bccomp(1.123,1.124,3),'<br>'; //-1
复制代码
浮点数的范围比整型要大, 理论上,浮点数的最大值是:1.8E+308, 浮点数的精度有效位数是14位函数
布尔型详解: 打印布尔型使用 var_dump()ui
字符串详解:编码
a.1.单引号字符串是真正的字符串,双引号字符串要将变量进行替换 (单引号字符串不须要运算,执行效率高一点)
<?php
$name='李白';
echo '名字是$name'; //名字是$name
echo "名字是$name"; //名字是李白
?>
复制代码
a.2.大括号和$符能够紧挨着结合使用
<?php
$name='李白';
echo '$name是名字<br>'; //$name是名字 换行了
echo "$name是名字<br>"; //报错双引号会认为$后面全是变量名
echo "$name 是名字<br>"; //李白 是名字 换行了
echo "($name)是名字<br>"; //(李白)是名字 换行了
echo "{$name}是名字<br>"; //李白是名字 换行了
echo "${name}是名字<br>"; //李白是名字 换行了
?>
复制代码
a.3.转义字符(\) 将具备特殊含义的字符转成普通字符
转义字符后面若是跟的是特殊字符,将特殊字符转成普通字符。
若是转义字符后面跟的是普通字符,转义字符不起做用,就是一个普通字符
echo "呵呵:\"哈哈\"",'<br>'; //呵呵:"哈哈"
echo "文件在c:\\"; //文件在c:\
echo '\1\2\3\4\5'; //\1\2\3\4\5
复制代码
可是,要注意转义字符和r、n、t的组合,\r组合表示回车,\n表示换行,\t表示制表符。
a.4 ASC|| 计算机内部使用二进制计算。键盘上的每一个字符都有一个编码和他对应,这个编码就是ASC||码。
ASC||码用7位的二进制数来表示,能够表示2^7次方个字符(128个)。
echo ord('A'),'<br>'; //65 将字符转成十进制ASC||码
echo chr(65),'<br>'; //A 将十进制的数字转成字符。
复制代码
""能够转义ASC码
echo "\101",'<br>'; //A 8进制ASC码转成字符
echo "\x41",'<br>'; //A 16进制ASC码转成字符
复制代码
a.5 字符串定界符
echo <<<str //开始定界符
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>PHP</title>
</head>
str; //结束定界符
复制代码
<?php
$name = '哈哈';
echo <<<str
呵呵$name
str;
//输出 呵呵哈哈
<?php
$name = '哈哈';
echo <<<'str'
呵呵$name
str;
//输出 呵呵$name
复制代码
类型 | 描述 |
---|---|
数组array | ['llj','llk'] |
对象object | {'name':'llj'} |
b.1. 数组详细
定义数组:
$stu = array('a','b','c','d','e');
$stu2[] = 'tom';
$stu2[] = 'berry';
复制代码
索引数组:经过下标索引
<?php
$stu = array('a','b','c','d','e');
echo $stu[0],'<br>'; //a
echo $stu[1],'<br>';
?>
复制代码
关联数组:元素的值与字符串有某种关联
<?php
$stu = array('name'=>'李白','sex'=>'男','age'=>'21');
echo $stu['name'],'<br>';
echo $stu['sex'],'<br>';
echo $stu['age'],'<br>';
?>
复制代码
键值对:数组的下标能够称为“键”,下标和对应的值称为“键值对”
数组下标能够修改 1=>'a'
extract() 从数组中的键值对转成广泛变量
$stu=array('id'=>1,'name'=>'tom');
extract($stu);
echo $id,'<br>',$name;
// 输出: 1 tom
复制代码
a 按照元素的键值关系分为:
b 按照数组的结构分
类型 | 描述 |
---|---|
资源 | resource |
无 | null |
资源:
<?php
$list = mysql_connect('localhost','root','adminllj');
var_dump($list); //resource(3) of type (mysql link)
echo '<br>';
$fp = fopen('./.htaccess','r');
var_dump($fp); //resource(5) of type (stream)
?>
复制代码
NULL:
function fun() {}
var_dump(fun());
复制代码
计算机中支持 十进制、二进制、八进制、十六进制 (逢2、8、10、十六进1) 十六进制: 0-9,A,B,C,D,E,F (F=15)
例题1:十进制123,写出表达式(斜体表示次方) 123 = 1X100 + 2X10 + 3 123 = 1X102+2X101+3X100
例题2:八进制123,转成十进制 123 = 1X82+2X81+3X80
例题3:十六进制FF,转成十进制 FF = 15X161+15X160 = 255
例题4:二进制1001转成十进制 1001 = 23+20 = 9
进制 | 函数 | 结果 ---|--- 十进制转成二进制 | decbin(9) | 1001 二进制转成十进制 | bindec(1001) | 9 十进制转成八进制 | decoct(10) | 12 十进制转成十六进制 | dechex(10) | a
echo decbin(9),'<br>'; //1001
echo bindec(1001),'<br>'; //9
echo decoct(10),'<br>'; //12
echo dechex(10),'<br>'; //a
复制代码
数据类型是数据在内存中存储的结构,和创建在该数据结构上的操做算法的集合。
这就意味着不一样的数据类型运算操做可能不同。不一样类型的数据在运算过程当中要注意类型的转换。
运算过程当中须要的数据类型和提供的数据类型不一致。
<?php
$num = 10;
if($num){
echo '把数字型转换成布尔型';
}
echo '<br>';
echo '10aa' + '20bb'; //30 把字符串转成数字
echo '<br>';
$num0 = 'abc';
$num1 = 0;
if($num0 == $num1){
echo '把$num0转换成了数字0';
}
?>
复制代码
语法:(数据类型)数据
示例:
<?php
$num = 10;
var_dump((bool)$num); //bool(true) 转换成布尔
echo '<br>';
$num0 = 12.5;
echo (int)$num0; //12 浮点数转成整数
echo '<br>';
?>
复制代码
//字符串和bool的转换规律
var_dump((bool)'abcd'); //true
var_dump((bool)''); //false
var_dump((bool)'0'); //false
var_dump((bool)'0.0'); //true
var_dump((bool)'00'); //true
var_dump((bool)'false'); //true
var_dump((bool)'null'); //true
---
//数字和bool的转换规律
var_dump((bool)1); //true
var_dump((bool)0); //false
var_dump((bool)-10); //true
var_dump((bool)1.1); //true
var_dump((bool)0.0); //false
var_dump((bool)-1.1); //true
---
//数组和bool的转换规律
var_dump((bool)array()); //false
var_dump((bool)array(1)); //true
var_dump((bool)array(false));//true
---
//数组和null的转换规律
var_dump((bool)null); //false
复制代码