码迷,mamicode.com
首页 > Web开发 > 详细

前端PHP入门-004-数据类型,特别需要注意字符串

时间:2016-08-07 12:18:28      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:

人类世界对万事万物都有种类划分,例如:
哺乳动物
人、猫、马、鸭嘴兽….等等
蔬菜
西红柿、波菜、茄子….等等
水果
西瓜、桃子、苹果….等等

数据类型:就是对数据分类的一个划分而已

整型就是整数

我一直在讲,不要被名词的含义所吓唬住。

到底什么是整型呀?

所谓整型,就是大家数学中所学的整数,我们最经常使用的。

整型——整数也,英文称之:`integer`。英文简写:`int`

整型分为:

  • 10进制
  • 8进制 (了解,基本不用)- 0开头的
  • 16进制(了解,基本不用)- 0X开头

整型(整数)在计算机里面是有最大值最小值范围的。

备注:

  • 32位计算机,也就是32位计算机一次运算处理的最大范围为-232至232-1。
  • 64位计算机呢?——-264至264-1 所以为什么现在大家都是用64位计算机了吧

10进制声明

对你你们到这种程度就可以了!别忘深里研究,了解即可

  1. <?php
  2. //声明变量 整数,英文 int
  3. //$int = 1000;
  4. $zhengshu = 1000;
  5. echo $zhengshu;
  6. ?>

8进制声明

以0开始,后面跟0-7的整数(了解知识点)

  1. //8进制的取值范围最大为0-7,即0,1,2,3,4,5,6,7
  2. //能力有限使用的比较少
  3. $bajingzhi = 033145;//八进制代码
  4. echo $bajingzhi;

16进制声明

以0x开始,后面跟0-f的,0x的abcdef不区分大小写。(了解知识点)

  1. <?php
  2. //16进制的取值范围最大为0-f,即0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
  3. $shiliu = 0x6ff;
  4. echo $shiliu;
  5. ?>

别去考虑8进制和16进制是怎么实现的,没有用! 学会如何声明10制制整数即可。了解8制制和16进制的声明,实在不会也不要紧


布尔

所谓布尔类型,举个例子帮助理解:

  • 阴/阳
  • 男/女
  • 真/假
  • 对/错
  • 存在/不存在
  • 0/1
    等等…. …简单的思维,没有模棱两可
  1. <?php
  2. //声明一个变量(拼音)为布尔
  3. $buer = true;
  4. //导明一个变量(英文)
  5. $bool = false;
  6. ?>

注:true和false外面不要加引号。类型转换,后面的课程当中我们来讲解。

false家族成员,在Java当中只有true和false,

** 重点,重点,重点**


布尔值=false .
整数值=0
浮点数=0.0
空字符串
空数组
没有变量成员的对象。
变量值为空NULL

思考: JavaScript的false五兄弟是哪些?

除了上述情况以外,其余情况值将会被转换为true,
一般来说,1为true,0为false。
这些转换将在以后的判断语句中经常遇到。


字符串

字符串就是所有我们可见和不可见的字符,就是我们日常当中说的话,就是我想说:“胖先生你比宋仲基都帅”或者“王尼玛,我爱你!”。
字符串,就是我想表达的一切让人看到的字符。

如何声明字符串

在PHP语言中声明字符串有三种方式:

  • 用单引号声明
  • 用双引号声明
  • 用字界符声明(需要输入非常大段的字符串时使用)

单引号声明

用英文半脚的单引号,将字符串包起来

  1. <?php
  2. //声明字符串变量$zhifu
  3. $zhifu = ‘曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子‘;
  4. //你可以放www指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。
  5. echo $zhifu;
  6. //想好玩可以加入样式哟!~~~~
  7. ?>
  8. ```
  9. ## 双引号声明字符串
  10. > 在字符串两边加双引号。
  11. ```php
  12. <?php
  13. //声明字符串变量$str
  14. $str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。";
  15. echo $str;
  16. ?>

字界符声明

  1. 在变量后面的等号写三个小于号(<<<)。
  2. 然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC
  3. 然后换行写上任意想写的字符
  4. 写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;
  1. <?php
  2. $dingjie = <<<ABC
  3. 如果
  4. 非要在这个滚犊子
  5. 面<br />
  6. 加上一段
  7. <i>距离的话</i>
  8. 我想说:<h1>思想有多远,你就跟我滚多远</h1>
  9. ABC;
  10. ?>

重点,双引号和单引号有什么区别呢?

重要知识点PHP面试题中,高概率面试题(建议背诵并实验三遍以上)

  • 双引号解析变量,但是单引号不解析变量。
  • 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开
  • 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。推荐写法
  • 双引号解析转义字符,单引号不解析转义字符。但是,单引号能解析\‘ 和\
  • 单引号效率高于双引号,尽可能使用单引号
  • 双号和单引号可以互相使用!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
  • 神奇的字符串拼接胶水——(.)点,用来拼接字符串
  • 我们将定界符声明字符串视为双引号一样的功能来看待。

实验举例
1.双引号解析变量,但是单引号不解析变量
双引号:

  1. <?php
  2. //声明变量$shouji
  3. $shouji = ‘为了苹果手机去卖肾‘;
  4. //在双引号中放$shouji 然后echo 一下是什么效果呢?
  5. $str = "$shouji 会不会显示呢?";
  6. //输入$str试试
  7. echo $str;
  8. ?>

单引号:

  1. <?php
  2. //声明变量$shouji
  3. $shouji = ‘为了苹果手机去卖肾‘;
  4. //在单引号引号中放$shouji 然后echo 一下是什么效果呢?
  5. $str = `$shouji 会不会显示呢?`;
  6. //输入$str试试
  7. echo $str;
  8. ?>

通过上例,我们证明了:双引号执行变量,而单引号不执行变量。
我们得到一个重要结论:
1.双引号需要解析变量,因此双引号的效率没有单引号高。
2.我们如果为了更高的效率,我们通常使用单引号。

2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。

  1. <?php
  2. $huaqiangu = ‘花千骨‘;
  3. //直接连接使用
  4. $str = "$huaqianguaaaa";
  5. //你会发现输出$str,什么都没有在页面中显示
  6. echo $str;
  7. ?>

** 改进代码,空格分隔**

  1. <?php
  2. $huaqiangu = ‘花千骨‘;
  3. //中间加了空格哟
  4. $str = "$huaqiangu aaaa";
  5. echo $str;
  6. ?>

再改进代码,使用叹号!

  1. <?php
  2. $huaqiangu = ‘花千骨‘;
  3. //中间加了叹号
  4. $str = "$huaqiangu!aaaa";
  5. echo $str;
  6. ?>

写这么多就是为了证明上面的使用规则

3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:

  1. <?php
  2. $huaqiangu = ‘花千骨‘;
  3. //使用大括号了
  4. $str = "{$huaqiangu}aaaa";
  5. echo $str;
  6. ?>

4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\‘ 和\
第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:

  • \n 回车
  • \t 缩进

这个跟你们之前学习JavaScript当中的使用方式一致

  1. <?php
  2. //声明一个字符串,记住是双引号
  3. $string = "我,每天\n给梦想\t一个机会";
  4. echo $string;
  5. ?>

页面中看不到效果,右键查看源代码才能看到想过

$string = "我,每天\n给梦想\t一个机会";
\n在每天的后面,在源代码里显示的结果是跟按了回车键一样的效果。
\t在给梦想和一个机会中间。显示的结果是有几个空格的效果。\t相当于我们在电脑上按了一个tab键效果。

BUT,我们同样执行一下上面的代码,但是$string双引号改为用单引号:

  1. <?php
  2. //声明一个字符串,记住是双引号
  3. $string = ‘我,每天\n给梦想\t一个机会‘;
  4. echo $string;
  5. ?>

证明: 双引号执行转义字符而单引号不执行转义字符。

5.转义字符\(反斜线的使用,很好用)
如果我们声明一个变量beizibeizi声明的双引号中间加上一个双引号显示输出怎么办?

  1. <?php
  2. //要在$beizi的字符串中显示一个双引号怎么办?
  3. $beizi = "多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧";
  4. echo $beizi;
  5. ?>

悲剧啦!
如果真如上述所写代码,代码会报错。报错结果如下:
因为字符串:“多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧”必须写在双引号中间。而双引号中间还有一个双引号。也就是意味着字符串声明提前结束了,在“但是”处结束了。后面"我们在不断的让人生变为喜剧",电脑不认识。

这真是一个杯具!那么办?
答:我们需要将双引号原有的意义去掉。再双引号前面加上一个\(反斜线,计算机的专业名词叫转义字符),就可以了。
```php
<?php

//要在$beizi的字符串中显示一个双引号怎么办?
 $beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧";

 echo $beizi;

?>

  1. 你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。
  2. ```php
  3. <?php
  4. //要在$beizi的字符串中显示一个双引号怎么办?
  5. $shengyang = ‘i\‘m xiaoshengyang‘;
  6. echo $shengyang;
  7. ?>

6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
```php
<?php

$legend = ‘猛虎‘;

 $NoAlike = "心有‘$legend‘,细嗅蔷薇";

 echo $NoAlike;//运行结果为-->心有‘猛虎‘,细嗅蔷薇

?>

  1. 7.`重点`神奇的字符串拼接胶水——(.)点,用来拼接字符串。
  2. ```php
  3. <?php
  4. $huaqiangu = ‘花千骨‘;
  5. //中间加了空格哟
  6. $str = "{$huaqiangu}aaaa";
  7. echo $str;
  8. ?>

上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:

效率没有纯单引号的高

  • 问题1:我想改为效率最高的方式应该怎么办?

  • 问题2:我有多个字符串,要拼接在一声怎么办?

使用到神奇的胶水[粘合剂]:(.)点,用来拼接字符串。

  1. <?php
  2. $shixi = ‘大学4年要好好学习<br />‘;
  3. $buran = ‘不然连实习的机会都没有<br />‘;
  4. $mimang = ‘把别人用来迷茫的时间拿到胖先生这里学习<br />‘;
  5. $xuexi = ‘学习PHP<br />‘;
  6. //我们可以把字符串全部拼接起来。
  7. echo $shixi . $buran . $mimang . $xuexi;
  8. ?>

JavaScript如何做呢?

因此,刚刚的问题一的代码我们可以改为:
```php
<?php
huaqiangu=;//str = $huaqiangu . ‘aaaa‘;

 echo $str;

?>

  1. 8.我们将定界符声明字符串视为双引号一样的功能来看待。
  2. ```php
  3. <?php
  4. $weilai = ‘努力才有未来‘;
  5. $mimang = ‘迷茫的原因是没有目标‘;
  6. $dingjie = <<<ABC
  7. 如果
  8. $weilai
  9. 非要\t在这"个滚"犊子
  10. ‘$mimang‘
  11. 面<br />
  12. 加上\n一段
  13. <i>距离的话</i>
  14. 我想说:<h1>思想有多远,你就跟我滚多远</h1>
  15. ABC;
  16. echo $dingjie;
  17. ?>

你可以执行发现weilai,mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。

再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!


不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。


浮点型

所谓浮点类型,可以理解为:我们数学里面的小数。

【注意】关于精度、取值范围和科学型声明不是学习的重点。因为此块在实际开发中用的特别少。针对于WEB前端的各位学生
声明方式分为两种:

  • 普通声明
  • 科学声明

普通声明浮点数
```php
<?php
//声明变量fudian的值为12121.3132
fudian=12121.3132;echofudian;
//声明变量fl0.8873fl = 0.8873;
var_dump($fl);//看这里,看这里,看这里
?>

  1. 我们将文件保存到www目录下,保存文件名为:float.php。在浏览器地址栏,输入: http://127.0.0.1/float.php , 执行看看结果,如下:
  2. ![](http://i.imgur.com/5bghAfL.png)
  3. `echo 直接输出了12121.3132,而var_dump 输出了0.8873,还显示了变量$fl的类型为float。`
  4. ----------
  5. > var_dump() 是一个函数。向括号()中间`插入变量`。这个函数,会打印出来`数据类型`,还会对应显示变量的`长度``值`
  6. > var 是指变量的英文 variable
  7. ----------
  8. # NULL类型,别死在这里
  9. > 空在英文里面表示是null,它是代表`没有`。空(null)`不是false``不是0`,也`不是空格`
  10. 【重点】知道null产生的三种情况,学习empty isset两个函数的区别。
  11. 主要有以下三空情况会产生空(null)类型:
  12. + 通过变量赋值明确指定为变量的值为NULL
  13. + 一个变量没有给任何值
  14. + 使用函数unset()将变量销毁掉
  15. ```php
  16. <?php
  17. //声明变量为null
  18. $n = null;
  19. var_dump($n);
  20. //var_dump显示输出变量$meiyou,看看结果是什么?
  21. var_dump($meiyou);
  22. //声明一个变量$iphone的值为字符串的手机
  23. $iphone = ‘手机‘;
  24. //unset销毁掉一个变量
  25. unset($iphone);
  26. var_dump($iphone);
  27. ?>

接下来我们来讲解两个跟null相关的函数,这两个函数非常常用,我们将级别定义为【默写级别】。

  • empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。
  1. <?php
  2. $apple = null;
  3. if(empty($apple)){
  4. echo ‘执行了真区间,凤姐,我爱你‘;
  5. }else{
  6. echo ‘行了假区间,你想凤姐了‘;
  7. }
  8. ?>

上述实验证明,$apple为null。将apple放至empty中间。结果执行了真区间。

  • isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。
  1. <?php
  2. //待会儿将变量$jia改为null再执行看看结果
  3. $jia = false;
  4. $result = isset($jia);
  5. var_dump($result);
  6. ?>

告诉我答案:

  1. <?php
  2. $one = 10;
  3. $two = false;
  4. $three = 0;
  5. $four = null;
  6. $result = isset($one , $two , $three , $four);
  7. //执行看看结果,是不是
  8. var_dump($result);
  9. ?>

我没有对象呢?不讲了,以后再说!

对象类型大家这这里不用学习。
私人定制,以后找到对象在学习!
技术分享

知道对象是一个复合类型,对象的英文叫object
var_dump一个变量的时候看到的类型为object的
这个变量就是对象类型


墙角画圈圈呢?数组,不认识它

数组类型我们也不在这里学习,因为以后会也有一个章节来进行讲解。

本章重点:

  • 知道数组是一个复合类型
  • 数组的英文叫array,var_dump一个变量的时候看到的类型为array的,这个变量就是数组类型
  • 会一个最简单、最基本的数组声明【默写】
    接下来我们声明一个数组,了解数组里面可以插入多个值就行。
  1. <?php
  2. //定义$shu这个变量
  3. //数组声明是向array里面插入一个或者多个值
  4. //一个或者多个值用逗号分开
  5. $shu = array(1,2,3);
  6. ?>

资源类型 , 谁有资源,介绍一下?

技术分享

资源类型很多初学者觉得比较难以理解。因为资源类型打印出来只能够看到一个英文的resource。其他的什么在电脑上都不能显示出来,而他有客观存在。

其实,资源类型很简单。我们针对词来进行说明。

  • 电脑里面的资源是指:

    • word,excel等文件
    • 有人收藏的美女图片和我们的自拍照片等图片
    • 音乐
    • 打开的网页
    • 数据库
    • 等等我想静静

    我们打开一个图片,用PHP来操作它,我们就是操作的一个资源
    我们打开的数据库连接,我们需要连接数据库,数据库就是我们操作的资源。
    包括网络连接,连接后发送邮件,我们也可以认为是一个资源。

本章重点:
理解资源就提操作我们可见和不可见的文件、网络和数据。
我们在以后的章节中,操作图片和网络的时候大家会有更为深刻的印象。


# 眼前了解回调类型即可
callback,英文中的call是叫,back是返回,回来的意思。
callback 汉译过来的意思即为:回调。
(执行完成,再调一次某个功能执行一次)
我们在讲解函数类型和对象的时候,我们会演示讲解回调函数


# 查看和判断数据类型
我们知道了一个数据的类型,才能进行下一步操作。后面的时候,大家可以学习到更多的知识——自定义功能(函数)。

我们来做一个场景模拟:(注:眼前不用会写这个函数,以后会教大家)

假设,我们可以写一个智能的功能(函数),它让有一个功能,就是打开一个装有学生成绩的电子表格。这个函数非常先进。

  • 只有一个人的时候,就返回一个人的成绩,成绩是整型或者浮点型变量。
  • 有2个或两个以上人的时候,返回一个数组类型变量,数组中装有多个人的成绩
  • 如果没有人的时候,则返回布尔值的变量,变量值为false
    通过上面的一个场景模拟,我们知道了,一个函数(功能)有可能返回不同的数据类型。因此,我们可以根据不同的类型来做不同的事情。

判断数据类型很重要,我们需要严格掌握。

【默写级知识点】显示类型的函数、得到类型的函数、判断类型的函数

查看数据类型

gettype(传入一个变量) 能够获得变量的类型
```php
<?php
//声明一个变量88.8,
//你可以自己多做几次实验换成其他类型看看typefloat = 88.8;
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 是否为函数
  1. <?php
  2. //is_* 系列函数有个特点,就是如果是这个类型就返回的是真。不是这个数据类型就返回的是假
  3. //声明类型为假
  4. $fo = false;
  5. if(is_bool($fo)){
  6. echo ‘执行真区间‘;
  7. }else{
  8. echo ‘执行假区间‘;
  9. }
  10. //检查未声明的变量$p是否为空,为空就执行真区间
  11. if(is_null($p)){
  12. echo ‘执行真区间‘;
  13. }else{
  14. echo ‘执行假区间‘;
  15. }
  16. //字符串类型的数值,看看执行的是真还是假
  17. $str = ‘18.8‘;
  18. if(is_numeric($str)){
  19. echo ‘执行真区间‘;
  20. }else{
  21. echo ‘执行假区间‘;
  22. }
  23. ?>
  24. ----->重新进行测试代码
  25. //把sca的值换成整型、浮点、布尔和字符串试试
  26. $sca = true;
  27. //如果为标量,执行真区间
  28. if(is_scalar($sca)){
  29. echo ‘执行真区间‘;
  30. }else{
  31. echo ‘执行假区间‘;
  32. }
  33. //换成echo,is_int试试,为什么echo执行假区间呢?
  34. if(is_callable(‘var_dump‘)){
  35. echo ‘执行真区间‘;
  36. }else{
  37. echo ‘执行假区间‘;
  38. }
  1. 注:is_types 很好记。is_ 在前后面跟类型即可。
  2. 标量:整型(int 浮点(float)、布尔(bool)、字符串(string
  3. 混合类型: 数组(array)、对象(object
  4. 特殊类型:空(null)、 资源(resouce)、回调(callback
  5. 为什么最后的实验中echo执行假区间呢?
  6. 答:因为echo 不是函数,是基本语法。大家眼前可以不用理解函数和基本语法的区别。了解和不了解在实际开发中没有影响。知道有这个知识点就行。

数据类型的自动转换和强制转换,背吧背吧

预备

PHP在PHP 5.x阶段都是完全的弱类型的编程语言。所谓弱类型,就是在声明变量的时候,不需要指定变量的类型。我要声明一个整型的变量,我不用在前面非得写上类型,再写变量。

而PHP 7 的性能有很大的提高。实际测试的结果,PHP 7的性能与PHP5.6相比,提升了性能接近200%。在PHP 7 中有些地方,我们可以强制指定类型,也可以不用强制指定类型来声明变量。

我们接来下来讲强制类型转换自动类型转换两个部份。

【默写级别】布尔值的自动类型转换、强制类型转换的英文单词

布尔值的自动类型转换
自动类型转换,就是数据类型在某些情况下,自动会变为其他的类型参与运算。自动类型转换的发生时机是:运算和判断的时候某些值会自动进行转换。

自动类型转换实验室

下面的情况是布尔值判断时的自动类型转换

  1. 整型的0为假,其他整型值全为真

  2. 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。

  3. 空字符串为假,只要里面有一个空格都算真。

  4. 字符串的0,也将其看作是假。其他的都为真

  5. 空数组也将其视为假,只要里面有一个值,就为真。

  6. 空也为假

  7. 未声明成功的资源也为假

我们针对以上针理的规则一项一项来做实验看看结果。


1. 整型的0为假,其他整型值全为真
```php
<?php
//整型的0,换成整型的其他值试试
bool=0;if(bool){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>

  1. **2\. 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。**
  2. ```php
  3. <?php
  4. //浮点类型的的0,换成其他值试试
  5. $bool = 0.0;
  6. if($bool){
  7. echo ‘美女美女我爱你‘;
  8. }else{
  9. echo ‘凤姐凤姐爱死我,执行假区间咯‘;
  10. }
  11. ?>

3. 空字符串为假,只要里面有一个空格都算真
```php
<?php
//空字符串,中间没有空格哟。实验完加个空格试试
str=;if(str){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>

  1. **4\. 字符串的0,也将其看作是假。其他的都为真**
  2. ```
  3. <?php
  4. //0这个字符串哟,试试其他值看看
  5. $str = ‘0‘;
  6. if($str){
  7. echo ‘美女美女我爱你‘;
  8. }else{
  9. echo ‘凤姐凤姐爱死我,执行假区间咯‘;
  10. }
  11. ?>

5. 空数组也将其视为假,只要里面有一个值,就为真。
```php
<?php
//这个数组当中啥也没放
arr=array();if(arr){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>

  1. **6\. 空也为假**
  2. ```php
  3. <?php
  4. //声明了一个空的变量$bool
  5. $bool = null;
  6. if($bool){
  7. echo ‘美女美女我爱你‘;
  8. }else{
  9. echo ‘凤姐凤姐爱死我,执行假区间咯‘;
  10. }
  11. ?>

7. 未声成功的资源也为假
```php
<?php
//下面这段代码会显示警告,可忽略。暂时只需要对着实验知道效果即可:未声成功的资源也为假
//下面这一块了解意思就行:打开adasfasfasfdsa.txt这个不存在的文件
res=fopen(adasfasfasfdsa.txt,r);if(res){
echo ‘美女美女我爱你‘;
}else{
echo ‘凤姐凤姐爱死我,执行假区间咯‘;
}
?>

  1. ## 其他类型的自动类型转换
  2. 自动类型转换在运算时也可以发生。跟所有我们总结的规律和观点一样:先总结、后实验。
  3. 只有标量在运算时会产生以下的自动类型转换:
  4. ![](http://i.imgur.com/rSvjZKn.png)
  5. 动手,你敢动手吗?动手啊!
  6. ```php
  7. <?php
  8. //布尔变整型参与运算
  9. $fo = true;
  10. $result = $fo + 10;
  11. //$result 结果为整型的11,因为$fo布尔的true变为了1
  12. //如果$fo的值为0
  13. var_dump($result);
  14. //字符串类型
  15. $str = ‘419不要爱‘;
  16. $result = $str + 1;
  17. //结果为420。因为将$str变为了整型的419参与运算
  18. //将419放在字符串中间和结尾试试
  19. var_dump($result);
  20. ?>

神奇不?呵呵,动手啊,打啊!

总结:
布尔值的true参与运算是会变成整型或者浮点的1
布尔值的false参与运算是会变成整型或者浮点的0
字符串开始处是整型或浮点类型的字符,会转成对应的类型参与运算

强制类型转换

强制类型转换有三种方式:

  • 用后面的三个函数可以完成类型转换,intval()、floatval()、strval()

  • 变量前加上()里面写上类型,将它转换后赋值给其他变量

  • settype(变量,类型) 直接改变量本身

1. intval()、floatval()、strval()转换
```php
<?php
float=1.23;result = intval(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;//jieguo = (int)transfer;vardump(jieguo);

//把浮点变为布尔
jieguo=(bool)transfer;
var_dump($jieguo);

//把布尔变整型
bool=true;jieguo = (int)$bool;

//把浮点变数组
$fo = 250;
$jieguo = (array)$fo;
var_dump($jieguo);

//其他的操作方式,按照文字总结的规律你来试试

?>

  1. **3\. settype(变量,类型) 直接改变量本身**
  2. ```php
  3. <?php
  4. //定义浮点变为整型
  5. $fo = 250.18;
  6. //settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型
  7. settype($fo,‘int‘);
  8. //输出看看结果
  9. var_dump($fo);
  10. ?>

【来试试】以下是强制类型转换时的特点,每一项你做实验看看对不对:

  • 空转为整型会为整型的0
  • 空转为浮点会为浮点的0
  • 空转为字符串会为空字符串‘’
  • 浮点的123.0转为字符串会为字符串123
  • 浮点的123.2转为字符串会为字符串的123.2
  • 浮点即使小数点再大,它都会被干掉,会舍掉小数点后面的值
  • 如果字符串转为整型的时候,如果数值在前面,会将前面的数值拿出来做为整型的转换值。
  • settype(变量,‘null‘); 等价于 unset()一个变量
  • =()操作变量 只会改变目标变量的类型,不会改变原变量的类型,Settype是改变原值

```php
<?php
//小可爱,记得自己做实验,验证上面的9点哟
$t=12.9;

 settype($t,‘int‘);

 var_dump($t);

?>
```





前端PHP入门-004-数据类型,特别需要注意字符串

标签:

原文地址:http://www.cnblogs.com/pangxiansheng/p/0f82e891b6ceb9240bfd965b5f6dd7dc.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!