人类世界对万事万物都有种类划分,例如:
哺乳动物
人、猫、马、鸭嘴兽….等等
蔬菜
西红柿、波菜、茄子….等等
水果
西瓜、桃子、苹果….等等
数据类型:就是对数据分类的一个划分而已
整型就是整数
我一直在讲,不要被名词的含义所吓唬住。
到底什么是整型呀?
所谓整型,就是大家数学中所学的整数,我们最经常使用的。
整型——整数也,英文称之:`integer`。英文简写:`int`
整型分为:
- 10进制
- 8进制 (了解,基本不用)- 0开头的
- 16进制(了解,基本不用)- 0X开头
整型(整数)在计算机里面是有最大值
和最小值
范围的。
备注
:
- 32位计算机,也就是32位计算机一次运算处理的最大范围为-232至232-1。
- 64位计算机呢?——-264至264-1 所以为什么现在大家都是用64位计算机了吧
10进制声明
对你你们到这种程度就可以了!别忘深里研究,了解即可
<?php
//声明变量 整数,英文 int
//$int = 1000;
$zhengshu = 1000;
echo $zhengshu;
?>
8进制声明
以0开始,后面跟0-7的整数(了解知识点)
//8进制的取值范围最大为0-7,即0,1,2,3,4,5,6,7
//能力有限使用的比较少
$bajingzhi = 033145;//八进制代码
echo $bajingzhi;
16进制声明
以0x开始,后面跟0-f的,0x的abcdef不区分大小写。(了解知识点)
<?php
//16进制的取值范围最大为0-f,即0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
$shiliu = 0x6ff;
echo $shiliu;
?>
别去考虑8进制和16进制是怎么实现的,没有用! 学会如何声明10制制整数即可。了解8制制和16进制的声明,实在不会也不要紧
布尔
所谓布尔类型,举个例子帮助理解:
- 阴/阳
- 男/女
- 真/假
- 对/错
- 存在/不存在
- 0/1
等等…. …
简单的思维,没有模棱两可
<?php
//声明一个变量(拼音)为布尔
$buer = true;
//导明一个变量(英文)
$bool = false;
?>
注:
true和false外面不要加引号。类型转换,后面的课程当中我们来讲解。
false家族成员,在Java当中只有true和false,
** 重点,重点,重点**
布尔值=false .
整数值=0
浮点数=0.0
空字符串
空数组
没有变量成员的对象。
变量值为空NULL
思考: JavaScript的false五兄弟是哪些?
除了上述情况以外,其余情况值将会被转换为true,
一般来说,1为true,0为false。
这些转换将在以后的判断语句中经常遇到。
字符串
字符串就是所有我们可见和不可见的字符,就是我们日常当中说的话,就是我想说:“胖先生你比宋仲基都帅”或者“王尼玛,我爱你!”。
字符串,就是我想表达的一切让人看到的字符。
如何声明字符串
在PHP语言中声明字符串有三种方式:
- 用单引号声明
- 用双引号声明
- 用字界符声明(需要输入非常大段的字符串时使用)
单引号声明
用英文半脚的单引号,将字符串包起来
<?php
//声明字符串变量$zhifu
$zhifu = ‘曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子‘;
//你可以放www指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。
echo $zhifu;
//想好玩可以加入样式哟!~~~~
?>
```
## 双引号声明字符串
> 在字符串两边加双引号。
```php
<?php
//声明字符串变量$str
$str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。";
echo $str;
?>
字界符声明
- 在变量后面的等号写三个小于号(<<<)。
- 然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC
- 然后换行写上任意想写的字符
- 写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;
<?php
$dingjie = <<<ABC
如果
非要在这个滚犊子
前
面<br />
加上一段
<i>距离的话</i>
我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;
?>
重点,双引号和单引号有什么区别呢?
重要知识点
PHP面试题中,高概率面试题(建议背诵并实验三遍以上)
- 双引号
解析
变量,但是单引号不解析
变量。 - 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。
一定要在变量后面接上特殊字符,例如空格等分开
。 - 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
推荐写法
- 双引号解析转义字符,单引号不解析转义字符。但是,单引号能解析\‘ 和\
- 单引号效率高于双引号,
尽可能使用单引号
- 双号和单引号可以互相使用!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
- 神奇的字符串拼接胶水——(
.
)点,用来拼接字符串
。 - 我们将定界符声明字符串视为双引号一样的功能来看待。
实验举例
1.双引号解析变量,但是单引号不解析变量
双引号:
<?php
//声明变量$shouji
$shouji = ‘为了苹果手机去卖肾‘;
//在双引号中放$shouji 然后echo 一下是什么效果呢?
$str = "$shouji 会不会显示呢?";
//输入$str试试
echo $str;
?>
单引号:
<?php
//声明变量$shouji
$shouji = ‘为了苹果手机去卖肾‘;
//在单引号引号中放$shouji 然后echo 一下是什么效果呢?
$str = `$shouji 会不会显示呢?`;
//输入$str试试
echo $str;
?>
通过上例,我们证明了:双引号执行变量,而单引号不执行变量。
我们得到一个重要结论:
1.双引号需要解析变量,因此双引号的效率没有单引号高。
2.我们如果为了更高的效率,我们通常使用单引号。
2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。
<?php
$huaqiangu = ‘花千骨‘;
//直接连接使用
$str = "$huaqianguaaaa";
//你会发现输出$str,什么都没有在页面中显示
echo $str;
?>
** 改进代码,空格分隔**
<?php
$huaqiangu = ‘花千骨‘;
//中间加了空格哟
$str = "$huaqiangu aaaa";
echo $str;
?>
再改进代码,使用叹号!
<?php
$huaqiangu = ‘花千骨‘;
//中间加了叹号
$str = "$huaqiangu!aaaa";
echo $str;
?>
写这么多就是为了证明上面的使用规则
3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:
<?php
$huaqiangu = ‘花千骨‘;
//使用大括号了
$str = "{$huaqiangu}aaaa";
echo $str;
?>
4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\‘ 和\
第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:
- \n 回车
- \t 缩进
这个跟你们之前学习JavaScript当中的使用方式一致
<?php
//声明一个字符串,记住是双引号
$string = "我,每天\n给梦想\t一个机会";
echo $string;
?>
页面中看不到效果,右键查看源代码才能看到想过
$string = "我,每天\n给梦想\t一个机会";
\n在每天的后面,在源代码里显示的结果是跟按了回车键一样的效果。
\t在给梦想和一个机会中间。显示的结果是有几个空格的效果。\t相当于我们在电脑上按了一个tab键效果。
BUT,我们同样执行一下上面的代码,但是$string双引号改为用单引号:
<?php
//声明一个字符串,记住是双引号
$string = ‘我,每天\n给梦想\t一个机会‘;
echo $string;
?>
证明: 双引号执行转义字符而单引号不执行转义字符。
5.转义字符\(反斜线的使用,很好用)
如果我们声明一个变量beizi,我们想要在" role="presentation" style="position: relative;">beizi,我们想要在beizi,我们想要在beizi声明的双引号中间加上一个双引号显示输出怎么办?
<?php
//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧";
echo $beizi;
?>
悲剧啦!
如果真如上述所写代码,代码会报错。报错结果如下:
因为字符串:“多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧”必须写在双引号中间。而双引号中间还有一个双引号。也就是意味着字符串声明提前结束了,在“但是”处结束了。后面"我们在不断的让人生变为喜剧",电脑不认识。
这真是一个杯具!那么办?
答:我们需要将双引号原有的意义去掉。再双引号前面加上一个\(反斜线,计算机的专业名词叫转义字符),就可以了。
```php
<?php
//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧";
echo $beizi;
?>
你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。
```php
<?php
//要在$beizi的字符串中显示一个双引号怎么办?
$shengyang = ‘i\‘m xiaoshengyang‘;
echo $shengyang;
?>
6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
```php
<?php
$legend = ‘猛虎‘;
$NoAlike = "心有‘$legend‘,细嗅蔷薇";
echo $NoAlike;//运行结果为-->心有‘猛虎‘,细嗅蔷薇
?>
7.`重点`神奇的字符串拼接胶水——(.)点,用来拼接字符串。
```php
<?php
$huaqiangu = ‘花千骨‘;
//中间加了空格哟
$str = "{$huaqiangu}aaaa";
echo $str;
?>
上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:
效率没有纯单引号的高
- 问题1:我想改为效率最高的方式应该怎么办?
- 问题2:我有多个字符串,要拼接在一声怎么办?
使用到神奇的胶水[粘合剂]:(.)点,用来拼接字符串。
<?php
$shixi = ‘大学4年要好好学习<br />‘;
$buran = ‘不然连实习的机会都没有<br />‘;
$mimang = ‘把别人用来迷茫的时间拿到胖先生这里学习<br />‘;
$xuexi = ‘学习PHP<br />‘;
//我们可以把字符串全部拼接起来。
echo $shixi . $buran . $mimang . $xuexi;
?>
JavaScript如何做呢?
因此,刚刚的问题一的代码我们可以改为:
```php
<?php
huaqiangu=′花千骨′;//中间加了空格哟" role="presentation" style="position: relative;">huaqiangu=′花千骨′;//中间加了空格哟huaqiangu=′花千骨′;//中间加了空格哟str = $huaqiangu . ‘aaaa‘;
echo $str;
?>
8.我们将定界符声明字符串视为双引号一样的功能来看待。
```php
<?php
$weilai = ‘努力才有未来‘;
$mimang = ‘迷茫的原因是没有目标‘;
$dingjie = <<<ABC
如果
$weilai
非要\t在这"个滚"犊子
前
‘$mimang‘
面<br />
加上\n一段
<i>距离的话</i>
我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;
echo $dingjie;
?>
你可以执行发现weilai," role="presentation" style="position: relative;">weilai,weilai,mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。
再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!
不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。
浮点型
所谓浮点类型,可以理解为:我们数学里面的小数。
【注意】关于精度、取值范围和科学型声明不是学习的重点。因为此块在实际开发中用的特别少。针对于WEB前端的各位学生
声明方式分为两种:
- 普通声明
- 科学声明
普通声明浮点数
```php
<?php
//声明变量fudian的值为12121.3132
fudian=12121.3132;echo" role="presentation" style="position: relative;">fudian=12121.3132;echofudian=12121.3132;echofudian;
//声明变量fl的值为0.8873" role="presentation" style="position: relative;">fl的值为0.8873fl的值为0.8873fl = 0.8873;
var_dump($fl);//看这里,看这里,看这里
?>
我们将文件保存到www目录下,保存文件名为:float.php。在浏览器地址栏,输入: http://127.0.0.1/float.php , 执行看看结果,如下:
![](http://i.imgur.com/5bghAfL.png)
`echo 直接输出了12121.3132,而var_dump 输出了0.8873,还显示了变量$fl的类型为float。`
----------
> var_dump() 是一个函数。向括号()中间`插入变量`。这个函数,会打印出来`数据类型`,还会对应显示变量的`长度`和`值`。
> var 是指变量的英文 : variable
----------
# NULL类型,别死在这里
> 空在英文里面表示是null,它是代表`没有`。空(null)`不是false`,`不是0`,也`不是空格`。
【重点】知道null产生的三种情况,学习empty 和 isset两个函数的区别。
主要有以下三空情况会产生空(null)类型:
+ 通过变量赋值明确指定为变量的值为NULL
+ 一个变量没有给任何值
+ 使用函数unset()将变量销毁掉
```php
<?php
//声明变量为null
$n = null;
var_dump($n);
//var_dump显示输出变量$meiyou,看看结果是什么?
var_dump($meiyou);
//声明一个变量$iphone的值为字符串的手机
$iphone = ‘手机‘;
//unset销毁掉一个变量
unset($iphone);
var_dump($iphone);
?>
接下来我们来讲解两个跟null相关的函数,这两个函数非常常用
,我们将级别定义为【默写级别】。
- empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。
<?php
$apple = null;
if(empty($apple)){
echo ‘执行了真区间,凤姐,我爱你‘;
}else{
echo ‘行了假区间,你想凤姐了‘;
}
?>
上述实验证明,$apple为null。将apple放至empty中间。结果执行了真区间。
- isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。
<?php
//待会儿将变量$jia改为null再执行看看结果
$jia = false;
$result = isset($jia);
var_dump($result);
?>
告诉我答案:
<?php
$one = 10;
$two = false;
$three = 0;
$four = null;
$result = isset($one , $two , $three , $four);
//执行看看结果,是不是
var_dump($result);
?>
我没有对象呢?不讲了,以后再说!
对象类型大家这这里不用学习。
私人定制,以后找到对象在学习!
知道对象是一个复合类型,对象的英文叫object
var_dump一个变量的时候看到的类型为object的
这个变量就是对象类型
墙角画圈圈呢?数组,不认识它
数组类型我们也不在这里学习,因为以后会也有一个章节来进行讲解。
本章重点:
- 知道数组是一个复合类型
- 数组的英文叫array,var_dump一个变量的时候看到的类型为array的,这个变量就是数组类型
- 会一个最简单、最基本的数组声明【默写】
接下来我们声明一个数组,了解数组里面可以插入多个值就行。
<?php
//定义$shu这个变量
//数组声明是向array里面插入一个或者多个值
//一个或者多个值用逗号分开
$shu = array(1,2,3);
?>
资源类型 , 谁有资源,介绍一下?
资源类型很多初学者觉得比较难以理解。因为资源类型打印出来只能够看到一个英文的resource。其他的什么在电脑上都不能显示出来,而他有客观存在。
其实,资源类型很简单。我们针对词来进行说明。
- 电脑里面的资源是指:
- word,excel等文件
- 有人收藏的美女图片和我们的自拍照片等图片
- 音乐
- 打开的网页
- 数据库
- 等等我想静静
我们打开一个图片,用PHP来操作它,我们就是
操作的一个资源
。我们打开的数据库连接,我们需要连接数据库,数据库就是我们操作的资源。
包括网络连接,连接后发送邮件,我们也可以认为是一个资源。
本章重点:
理解资源就提操作我们可见和不可见的文件、网络和数据。
我们在以后的章节中,操作图片和网络的时候大家会有更为深刻的印象。
# 眼前了解回调类型即可
callback,英文中的call是叫,back是返回,回来的意思。
callback 汉译过来的意思即为:回调。
(执行完成,再调一次某个功能执行一次)
我们在讲解函数类型和对象的时候,我们会演示讲解回调函数
# 查看和判断数据类型
我们知道了一个数据的类型,才能进行下一步操作。后面的时候,大家可以学习到更多的知识——自定义功能(函数)。
我们来做一个场景模拟:(注:眼前不用会写这个函数,以后会教大家)
假设,我们可以写一个智能的功能(函数),它让有一个功能,就是打开一个装有学生成绩的电子表格。这个函数非常先进。
- 只有一个人的时候,就返回一个人的成绩,成绩是整型或者浮点型变量。
- 有2个或两个以上人的时候,返回一个数组类型变量,数组中装有多个人的成绩
- 如果没有人的时候,则返回布尔值的变量,变量值为false
通过上面的一个场景模拟,我们知道了,一个函数(功能)有可能返回不同的数据类型。因此,我们可以根据不同的类型来做不同的事情。
判断数据类型很重要,我们需要严格掌握。
【默写级知识点】显示类型的函数、得到类型的函数、判断类型的函数
查看数据类型
gettype(传入一个变量) 能够获得变量的类型
```php
<?php
//声明一个变量88.8,
//你可以自己多做几次实验换成其他类型看看type输出是多少" role="presentation" style="position: relative;">type输出是多少type输出是多少float = 88.8;
type=gettype(" role="presentation" style="position: relative;">type=gettype(type=gettype(float);
echo $type;
?>
```
var_dump(传入一个变量) 输出变类型和值
```php
//多换几个类型试试
$str = ‘你喜欢尊上还是喜欢杀仟陌?‘;
var_dump($str);
```
判断数据类型
使用is_* 系列函数。
is_types这一系列的函数,来进行判断某个东西是不是某个类型。
如果是这个类型返回真,不是这个类型返回假。
方法名 | 描述 |
---|---|
is_int | 是否为整型 |
is_bool | 是否为布尔 |
is_float | 是否是浮点 |
is_string | 是否是字符串 |
is_array | 是否是数组 |
is_object | 是否是对象 |
is_null | 是否为空 |
is_resource | 是否为资源 |
is_scalar | 是否为标量 |
is_numeric | 是否为数值类型 |
is_callable | 是否为函数 |
<?php
//is_* 系列函数有个特点,就是如果是这个类型就返回的是真。不是这个数据类型就返回的是假
//声明类型为假
$fo = false;
if(is_bool($fo)){
echo ‘执行真区间‘;
}else{
echo ‘执行假区间‘;
}
//检查未声明的变量$p是否为空,为空就执行真区间
if(is_null($p)){
echo ‘执行真区间‘;
}else{
echo ‘执行假区间‘;
}
//字符串类型的数值,看看执行的是真还是假
$str = ‘18.8‘;
if(is_numeric($str)){
echo ‘执行真区间‘;
}else{
echo ‘执行假区间‘;
}
?>
----->重新进行测试代码
//把sca的值换成整型、浮点、布尔和字符串试试
$sca = true;
//如果为标量,执行真区间
if(is_scalar($sca)){
echo ‘执行真区间‘;
}else{
echo ‘执行假区间‘;
}
//换成echo,is_int试试,为什么echo执行假区间呢?
if(is_callable(‘var_dump‘)){
echo ‘执行真区间‘;
}else{
echo ‘执行假区间‘;
}
注:is_types 很好记。is_ 在前后面跟类型即可。
标量:整型(int) 浮点(float)、布尔(bool)、字符串(string)
混合类型: 数组(array)、对象(object)
特殊类型:空(null)、 资源(resouce)、回调(callback)
为什么最后的实验中echo执行假区间呢?
答:因为echo 不是函数,是基本语法。大家眼前可以不用理解函数和基本语法的区别。了解和不了解在实际开发中没有影响。知道有这个知识点就行。
数据类型的自动转换和强制转换,背吧背吧
预备
PHP在PHP 5.x阶段都是完全的弱类型
的编程语言。所谓弱类型,就是在声明变量的时候,不需要指定变量的类型。我要声明一个整型的变量,我不用在前面非得写上类型,再写变量。
而PHP 7 的性能有很大的提高。实际测试的结果,PHP 7的性能与PHP5.6相比,提升了性能接近200%。在PHP 7 中有些地方,我们可以强制指定类型,也可以不用强制指定类型来声明变量。
我们接来下来讲强制类型转换
和自动类型转换
两个部份。
【默写级别】布尔值的自动类型转换、强制类型转换的英文单词
布尔值的自动类型转换
自动类型转换,就是数据类型在某些情况下,自动会变为其他的类型参与运算。自动类型转换的发生时机是:运算和判断的时候某些值会自动进行转换。
自动类型转换实验室
下面的情况是布尔值判断时的自动类型转换
:
- 整型的0为假,其他整型值全为真
- 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。
- 空字符串为假,只要里面有一个空格都算真。
- 字符串的0,也将其看作是假。其他的都为真
- 空数组也将其视为假,只要里面有一个值,就为真。
- 空也为假
- 未声明成功的资源也为假
我们针对以上针理的规则一项一项来做实验看看结果。
1. 整型的0为假,其他整型值全为真
```php
<?php
//整型的0,换成整型的其他值试试
bool=0;if(" role="presentation" style="position: relative;">bool=0;if(bool=0;if(bool){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
**2\. 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。**
```php
<?php
//浮点类型的的0,换成其他值试试
$bool = 0.0;
if($bool){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
3. 空字符串为假,只要里面有一个空格都算真
```php
<?php
//空字符串,中间没有空格哟。实验完加个空格试试
str=″;if(" role="presentation" style="position: relative;">str=′′;if(str=″;if(str){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
**4\. 字符串的0,也将其看作是假。其他的都为真**
```
<?php
//0这个字符串哟,试试其他值看看
$str = ‘0‘;
if($str){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
5. 空数组也将其视为假,只要里面有一个值,就为真。
```php
<?php
//这个数组当中啥也没放
arr=array();if(" role="presentation" style="position: relative;">arr=array();if(arr=array();if(arr){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
**6\. 空也为假**
```php
<?php
//声明了一个空的变量$bool
$bool = null;
if($bool){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
7. 未声成功的资源也为假
```php
<?php
//下面这段代码会显示警告,可忽略。暂时只需要对着实验知道效果即可:未声成功的资源也为假
//下面这一块了解意思就行:打开adasfasfasfdsa.txt这个不存在的文件
res=fopen(′adasfasfasfdsa.txt′,′r′);if(" role="presentation" style="position: relative;">res=fopen(′adasfasfasfdsa.txt′,′r′);if(res=fopen(′adasfasfasfdsa.txt′,′r′);if(res){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>
## 其他类型的自动类型转换
自动类型转换在运算时也可以发生。跟所有我们总结的规律和观点一样:先总结、后实验。
只有标量在运算时会产生以下的自动类型转换:
![](http://i.imgur.com/rSvjZKn.png)
动手,你敢动手吗?动手啊!
```php
<?php
//布尔变整型参与运算
$fo = true;
$result = $fo + 10;
//$result 结果为整型的11,因为$fo布尔的true变为了1
//如果$fo的值为0
var_dump($result);
//字符串类型
$str = ‘419不要爱‘;
$result = $str + 1;
//结果为420。因为将$str变为了整型的419参与运算
//将419放在字符串中间和结尾试试
var_dump($result);
?>
神奇不?呵呵,动手啊,打啊!
总结:
布尔值的true参与运算是会变成整型或者浮点的1
布尔值的false参与运算是会变成整型或者浮点的0
字符串开始处是整型或浮点类型的字符,会转成对应的类型参与运算
强制类型转换
强制类型转换有三种方式:
- 用后面的三个函数可以完成类型转换,intval()、floatval()、strval()
- 变量前加上()里面写上类型,将它转换后赋值给其他变量
- settype(变量,类型) 直接改变量本身
1. intval()、floatval()、strval()转换
```php
<?php
float=1.23;" role="presentation" style="position: relative;">float=1.23;float=1.23;result = intval(float);//看看结果是不是变了?vardump(" role="presentation" style="position: relative;">float);//看看结果是不是变了?vardump(float);//看看结果是不是变了?vardump(result);
//鸭脖子为整型的5
$yabozi = 5;
$re = floatval($yabozi);
var_dump($re);
//定义整型的变量
$yabozi = 23;
$bian = strval($yabozi);
//强制变成字符串试试
var_dump($bian);
?>
**2\. 变量前加上()里面写上类型,将它转换后赋值给其他变量**
php
<?php
//定义一个变量,我们来变化一下试试
transfer=12.8;//把浮点变为整型" role="presentation" style="position: relative;">transfer=12.8;//把浮点变为整型transfer=12.8;//把浮点变为整型jieguo = (int)transfer;vardump(" role="presentation" style="position: relative;">transfer;vardump(transfer;vardump(jieguo);
//把浮点变为布尔
jieguo=(bool)" role="presentation" style="position: relative;">jieguo=(bool)jieguo=(bool)transfer;
var_dump($jieguo);
//把布尔变整型
bool=true;" role="presentation" style="position: relative;">bool=true;bool=true;jieguo = (int)$bool;
//把浮点变数组
$fo = 250;
$jieguo = (array)$fo;
var_dump($jieguo);
//其他的操作方式,按照文字总结的规律你来试试
?>
**3\. settype(变量,类型) 直接改变量本身**
```php
<?php
//定义浮点变为整型
$fo = 250.18;
//settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型
settype($fo,‘int‘);
//输出看看结果
var_dump($fo);
?>
【来试试】以下是强制类型转换时的特点,每一项你做实验看看对不对:
- 空转为整型会为整型的0
- 空转为浮点会为浮点的0
- 空转为字符串会为空字符串‘’
- 浮点的123.0转为字符串会为字符串123
- 浮点的123.2转为字符串会为字符串的123.2
- 浮点即使小数点再大,它都会被干掉,会舍掉小数点后面的值
- 如果字符串转为整型的时候,如果数值在前面,会将前面的数值拿出来做为整型的转换值。
- settype(变量,‘null‘); 等价于 unset()一个变量
- 目标变量=(类型)" role="presentation" style="position: relative;">目标变量=(类型)目标变量=(类型)操作变量 只会改变目标变量的类型,不会改变原变量的类型,Settype是改变原值
```php
<?php
//小可爱,记得自己做实验,验证上面的9点哟
$t=12.9;
settype($t,‘int‘);
var_dump($t);
?>
```