首页 > 技术文章 > php变量的数据类型

zhony 2018-12-18 20:30 原文

 

数据类型分类

1) 标量类型
布尔型,整型,浮点型,字符串型
2)复合类型
数组,对象
3)特殊类型
资源,null

布尔型
true 真的 false 假的

 1 <?php
 2   //布尔型 true false 
 3      $a = true;
 4      var_dump($a);
 5     $b = false;
 6    var_dump($b);
 7  //使⽤echo打印变量值为true的这个变量得到的内容是1
 8     echo $a;
 9    echo '<hr/>';
10  //使⽤echo打印变量值为false的这个变量得到的内容是什么都没有
11    echo $b;//不显示

平时我们不会使用 echo 来打印布尔类型数值。
使用echo打印变量值为 false 的这个变量得到的内容是什么都没有,不是我们想象中的0.
下面的值会认为是 false ,其他值被认为是 true

布尔型false
整型的 0
浮点型的 0
空字符串和字符串 0
空的数组
特殊类型null

建议:打印布尔类型用 var_dump var_dump 来打印

整型(int)
正整数 负整数 0

整型的最⼤值,相对于32位操作系统数值 2147483647
整型的最⼩值 ,相对于32位操作系统数值 -2147483647
整型的值不能超过最大值最小值,如果超过将解析为float类型
可以用二进制 八进制 十进制 十六进制 表示整型
如果将整型转换为布尔型,除0以外全部是true,而0会转换成false

 1 <?php
 2  $a = 10;
 3  var_dump($a);
 4  $b = -10;
 5  var_dump($b);
 6  //最大值
 7  $c = 2147483647;
 8  var_dump($c);
 9 //最小值
10  $d = -2147483647;
11  var_dump($d);
12  echo '<hr/>';
13  //十进制 二进制 八进制 十六进制
14  // ⼆进制 0 1 转 10进制
15  // 1*2^2+1*2^1+1*2^0
16  $a = 0b111;
17  
18  //八进制 0-7 转 10
19  //7*8^1 + 7*8^0
20  $a = 077;
21  //十六进制 前面0x
22  //0-9 a b c d e f 
23 $a = 0xff;
24  //最终打印出来的都是⼗进制
25  var_dump($a);
26  //如果将数字全部变为布尔型 那么0 是false
27  //其余数字都是true
28  //非0即真
29  $b = 0;
30  var_dump((bool)$b);

浮点型(float)

就是我们生活中的小数
科学计数法:1E7 ----> 1*10的7次方
浮点数表示为数字的最⼤值1.7E308
浮点数表示为数字的最⼩值是-1.7E308
超出最大最小数字范围值出现 INF -INF 无穷大

 1 <?php
 2  //浮点型,⼩数 
 3  $a = 0.1;
 4  var_dump($a);
 5  $b = 1.234;
 6  var_dump($b);
 7  $c = 1E7; //1*10^7
 8  var_dump($c);
 9  $d = 7E-3; //7*10^-3
10  var_dump($d);
11  //超出最⼤范围会变为INF(⽆穷⼤)
12  var_dump(1.7E309);
13  //超出最⼩范围会变为-INF(负⽆穷⼤)
14  var_dump(-1.7E309);

字符串型

字符串就是用单引号和双引号和定界符包含的字符,就是字符串。
字符串没有长度限制

单引号:
1. 单引号不解析变量 ,效率高,推荐使用
2. 单引号不能包含单引号,如果需要显示的单引号需要加上转义字符 \
3. 单引号中如果用转义字符,只能转义字符本身和单引号
4. 单引号中如果试图使用特殊字符,反斜线会被显示出来

双引号:
1. 双引号解析变量
2. 双引号如果解析变量,请在变量后加上一个空格或者 {}
3. 双引号中不能包含双引号,如果需要显示的双引号需要加上转义字符 \
4. 双引号中如果使⽤转义字符,只能转义字符本身和双引号
5. 双引号可以解析特殊字符
6. 双引号可以插⼊单引号,单引号中可以插入双引号(可以互插)
7. 7.双引号不能插⼊双引号,单引号不能插入单引号(不能自插)

 1 <?php
 2   $a = '强';
 3   $b = '去学校厕所,就是那种坑都"是连通的 各个位置墙隔开,$a刚开始脱裤掉了个
 4 五⻆钱,\'疼
 5   了下,\\没办法继续脱裤⼦ 咣当⼜掉了⼀块钱 悲痛欲绝,后的坑来了句话,
 6 \n\t哥你把这
 7   当许愿池了!!!!';
 8   echo $b;
 9 echo '<hr/>';
10  $d = "⼤B哥";
11  $c = "亲爱的{$d},你知道吗?我'喜欢你好久了,在第⼀次⻅到你的时候我就控制不了
12 \\我了 \"每每
13  看你 我的内就翻腾的 在胃翻滚有\n\t种想吐的感觉";
14  echo $c;

php常用转义字符

定界符:
声明方式,在定界符后给一个标识符开始,然后以这个标识符结束。

1 $str=<<<aaa
2  
3 内容
4 内容
5 .....
6  
7 aaa;

注意:
1.在定界符结束标识必须写在第⼀列上,且必须作用一个单行显示,后⾯不能有任何字符。
2.开始标识后面不能出现任何内容包括空格等都不可以。
3.定界符的作用和双引号一样。
4.常用于文本和大段落的数组输出的时候使用。
5.标识符命名规则,遵循php命名规则,字母数字下划线组成不能以数字开头。

 1 <?php
 2 $a = 'xxboy';
 3 $str =<<<TF
 4  {$a}每天 左 右⼿⼀个慢动作
 5  右左 慢动作重播
 6  这歌 "给我快乐"
 7  有没有爱上我 
 8  跟着我 左 右 个慢动作
 9  右 慢动作 重播
10  这歌给我快乐
11 TF;
12 echo $str;

数组类型

我们用array来声明数组
根据下标区分

关联数组
索引数组
混合数组
根据维度来区分

一维数组
二维数组
多维数组

 1 <?php
 2  //根据下标来区分我们的数组
 3  //下标全是数字的我们管他叫做 索引数组
 4  $arr = array(1,2,3,2,3213,213,123,123,123,123);
 5  var_dump($arr);
 6 
 7 //下标为字符串,我们管他叫做关联数组,关联数组一般都是有意义的。
 8  $arr1 = array('name'=>'妖妖','age'=>52,'sex'=>'妖');
 9  var_dump($arr1);
10 //下标有字符串,也有数字,我们管这种叫做混合数组。
11  $arr2 =array('name'=>'俊俊','age'=>25,'sex'=>'女','俊俊才华横竖都溢');
12  var_dump($arr2);
13 echo '<hr/>';
14  //根据维度来区分
15  //⼀维数组
16  $arr3 = array(1,3,3,33,3);
17  var_dump($arr3);
18  //⼆维数组
19  $arr4 = array(
20  array(1),
21  array(2),
22  );
23  var_dump($arr4);
24 //多维数组
25  $arr5=array(
26  array(
27  array(1)
28  ));
29 var_dump($arr5);

 资源类型

什么叫资源?
都说我手里有一些资源,看似好像就是一些文件或者资料什么的,站在“资源”的⻆度讲,
它的作用是什么?连接两者的通道。

php中的资源类型通过php函数打开一个文件或者图片或者数据库连接(php5.4以前连接是资
源,php5.4以后连接就是对象)等产生

 null类型

null类型是php中特殊的类型,神⻢都是浮云的意思。
null 不区分大小写 NULL
35 var_dump($arr5);
下列情况被认为是null
将变量直接赋值null
声明变量尚未被赋值
被unset函数销毁的数值

 1 <?php
 2   //$img = imagecreatetruecolor(500,500 // var_dump($img);
 3   
 4   //$file = opendir('../A12_PHP01');
 5   //var_dump($file);
 6   
 7   //$a = '';
 8   //var_dump($a);
 9 $a = null;
10  var_dump($a);
11  var_dump($b);
12  $c = 100;
13  unset($c);
14  var_dump($c);

检测变量是否被声明

1)isset() 检测变量是否被声明过,如果声明过,返回true,如果没有声明过返回false
2)empty() 判断变量的值是否为空(零,假,null),如果是返回ture,否则返回false

 1 <?php
 2 $a = 100;
 3 var_dump(isset($a));//true
 4 var_dump(empty($a));//false
 5 echo '<hr/>';
 6 $b = 0;
 7 var_dump(isset($b));//true
 8 var_dump(empty($b));//true;
 9 echo '<hr/>';
10 $c = null;
11 var_dump(isset($c));//false
12 var_dump(empty($c));//true;

 

推荐阅读