3_PHP表达式_5_数据类型转换_类型自动转换
以下为学习孔祥盛主编的《PHP编程基础与实例教程》(第二版)所做的笔记。
PHP类型转换分为类型自动转换和类型强制转换。
1.布尔型数据参与算数运算时,TRUE被转换为整数1,FALSE被转换为整数0;NULL参与算术运算时,被转换为整数0。
<?php
$a = TRUE;
$b = FALSE;
$c = NULL;
$d = $a + 1;
$e = $b + 1;
$f = $c + 1; var_dump($d); //int 2
echo "<br/>";
var_dump($e); //int 1
echo "<br/>";
var_dump($f); //int 1
echo "<br/>";
?>
输出:
D:\wampServer\www\Apache服务器主目录\practise\例程.php:8:int 2 D:\wampServer\www\Apache服务器主目录\practise\例程.php:10:int 1 D:\wampServer\www\Apache服务器主目录\practise\例程.php:12:int 1
2.浮点数与整数进行算术运算时,将整数转换为浮点数后,再进行算术运算。
程序:
<?php
$a = TRUE;
$b = FALSE;
$c = $a + 1.0;
$d = $b + 1.0; var_dump($c); //float 2
echo "<br/>";
var_dump($d); //float 1
echo "<br/>";
?>
输出:
D:\wampServer\www\Apache服务器主目录\practise\例程.php:7:float 2 D:\wampServer\www\Apache服务器主目录\practise\例程.php:9:float 1
3.参与算术运算的字符串,只有以数字开头的字符串才会被认作数字。
程序:
<?php
$a = 1;
$b = "-4.01";
$c = "4.2e6"; //算术运算时,将被转换成4200000
$d = "-4.1degree"; //算术运算时,将被转换成 -4.1
$e = $a + "6th"; //算术运算时,将被转换成 6
$f = $a + $b;
$g = $a + $c;
$h = $a + $d;
$i = $a + "degree"; //算术运算时,"degree"将被转换成 0 var_dump($e); //int 7
echo "<br/>";
var_dump($f); //float -3.01
echo "<br/>";
var_dump($g); //float 4200001
echo "<br/>";
var_dump($h); //float -3.1
echo "<br/>";
var_dump($i); //int 1
?>
输出:
D:\wampServer\www\Apache服务器主目录\practise\例程.php:12:int 7 D:\wampServer\www\Apache服务器主目录\practise\例程.php:14:float -3.01 D:\wampServer\www\Apache服务器主目录\practise\例程.php:16:float 4200001 D:\wampServer\www\Apache服务器主目录\practise\例程.php:18:float -3.1 D:\wampServer\www\Apache服务器主目录\practise\例程.php:20:int 1
4.在进行字符串连接运算时
①整数、浮点数将被转换成字符串类型数据。
例如,12.3转换为字符串后为“12.3”。
②布尔型TRUE将被转换成字符串“1”,布尔型FALSE跟NULL将被转换成空字符串“”。
程序:
<?php
$a = 1;
$b = 1.02;
$c = TRUE;
$d = FALSE;
$e = NULL;
$f = "degree";
$g = $a.$f;
$h = $b.$f;
$i = $c.$f;
$j = $d.$f;
$k = $e.$f;
var_dump($g); //string '1degree' (length=7)
echo "<br/>";
var_dump($h); //string '1.02degree' (length=10)
echo "<br/>";
var_dump($i); //string '1degree' (length=7)
echo "<br/>";
var_dump($j); //string 'degree' (length=6)
echo "<br/>";
var_dump($k); //string 'degree' (length=6)
echo "<br/>";
?>
输出:
D:\wampServer\www\Apache服务器主目录\practise\例程.php:13:string '1degree' (length=7) D:\wampServer\www\Apache服务器主目录\practise\例程.php:15:string '1.02degree' (length=10) D:\wampServer\www\Apache服务器主目录\practise\例程.php:17:string '1degree' (length=7) D:\wampServer\www\Apache服务器主目录\practise\例程.php:19:string 'degree' (length=6) D:\wampServer\www\Apache服务器主目录\practise\例程.php:21:string 'degree' (length=6)
5.在进行逻辑运算时,空字符串“”、字符串零“0”、整数0、浮点数0.0、NULL以及空数组array()将被转换成布尔型为FALSE,其他数据将被转换成布尔型TRUE(注意字符串“0.0”将被转换成布尔型TRUE)。
程序:
<?php
$a = "";
$b = "0";
$c = "0.0";
$d = 0;
$e = 0.0;
$f = NULL;
$g = array();
$h = $a && TRUE;
$i = $b && TRUE;
$j = $c && TRUE;
$k = $d && TRUE;
$l = $e && TRUE;
$m = $f && TRUE;
$n = $g && TRUE; var_dump($h); //boolean false
echo "<br/>";
var_dump($i); //boolean false
echo "<br/>";
var_dump($j); //boolean true
echo "<br/>";
var_dump($k); //boolean false
echo "<br/>";
var_dump($l); //boolean false
echo "<br/>";
var_dump($m); //boolean false
echo "<br/>";
var_dump($n); //boolean false
echo "<br/>";
?>
输出:
D:\wampServer\www\Apache服务器主目录\practise\例程.php:17:boolean false D:\wampServer\www\Apache服务器主目录\practise\例程.php:19:boolean false D:\wampServer\www\Apache服务器主目录\practise\例程.php:21:boolean true D:\wampServer\www\Apache服务器主目录\practise\例程.php:23:boolean false D:\wampServer\www\Apache服务器主目录\practise\例程.php:25:boolean false D:\wampServer\www\Apache服务器主目录\practise\例程.php:27:boolean false D:\wampServer\www\Apache服务器主目录\practise\例程.php:29:boolean false
3_PHP表达式_5_数据类型转换_类型自动转换的更多相关文章
- 3_PHP表达式_5_数据类型转换_类型强制转换
以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. PHP类型转换分为类型自动转换和类型强制转换. 3.5.2 类型强制转换 类型强制转换允许编程人员手动将变量的数据 ...
- 类型转换构造函数 及使用explicit避免类型自动转换------新标准c++程序设计
类型转换构造函数: 除复制构造函数外,只有一个参数的构造函数一般可以称作类型转换构造函数,因为这样的构造函数能起到类型自动转换的作用.例如下面的程序: #include<iostream> ...
- JavaScript的类型自动转换高级玩法JSFuck
0 前言 最开始是不小心在微信公众号(程序员大咖)看到一篇JS的高逼格代码,然后通过里面的链接跳转到了JSFuck的wiki,就像顺着迷宫找宝藏的感觉,感叹JS的自动类型转换的牛逼. 1 样例 (!( ...
- tp类型自动转换和自动完成
一.类型自动转换 在模型中对数据库字段自动完成 //模型中数据类型自动转换 添加一个$type数组即可protected $type=array( 'username'=>'serialize' ...
- go之数据类型转换和类型断言
一.类型转换 1.1 简单类型转换 格式 valueOfTypeB = typeB(valueOfTypeA) int 转 float64 package main import "fmt& ...
- struts2各个功能详解(1)----参数自动封装和类型自动转换
struts2里面的各个功能,现在确实都不清楚,完全属于新学! 通过前面的例子,有时就会疑问,这些jsp中的数据信息是怎么传送给action的?例如: <form action = " ...
- struts2(三)之表单参数自动封装与参数类型自动转换
前言 对struts2的使用不外乎这几点,参数自动封装,拦截器的使用,数据校验,ognl表达(值栈和actionContext的讲解),struts2的标签,struts2的国际化, struts2的 ...
- struts2(二) 表单参数自动封装和参数类型自动转换
前篇文章对struts2的一个入门,重点是对struts2的架构图有一个大概的了解即可,之后的几篇文章,就是细化struts2,将struts2中的各种功能进行梳理,其实学完之后,对struts2的使 ...
- Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑
先来看一个例子: package com.test; public class calculate { /** * 光速30万公里/秒 */ public static final int LIGHT ...
随机推荐
- Springboot配置文件获取系统环境变量的值
注意,这里说的是获取系统环境变量的值,譬如Windows里配置的JAVA_HOME之类的,可以直接在Springboot的配置文件中获取. 我们经常使用一些docker管理平台,如DaoCloud.r ...
- WPF窗体自适应分辨率
使用WPF创建一个窗体(Window)时,如果设置了固定的高度(Height)和宽度(Width),一旦用户的电脑分辨率过低,就会使得窗体及其中的内容无法完整地显示出来.要解决这个这个问题,有以下几个 ...
- 安卓终端-Termux
Termux是一个 Android 终端模拟器以及提供 Linux 环境的应用程序.跟许多其他应用程序不同,无需 root 设备也无需进行设置.它是开箱即用的!它会自动安装好一个最基本的 Linux ...
- MyBatis的学习总结:调用存储过程【参考】
一.创建存储过程 存储过程的目的:统计edi_test_task 正在运行的任务和非运行的任务 CREATE DEFINER=`root`@`%` PROCEDURE `edihelper`.`SP_ ...
- ABAP语法篇1 DATA新用法
@DATA 按取数指定的字段定义内表结 定义工作区: SELECT SINGLE * FROM lfbk INTO @DATA(is_lfbk) ...
- hdu 2018 母牛的故事 动态规划入门题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2018 设 f[i][j] 表示第i天年龄为j的母牛个数,其中j=4代表所有年龄达到4岁的成年母牛,则: ...
- jquery分页展示控件:kkpager
kkpager v1.2 js分页展示控件,传入简单参数就能使用的分页效果控件 准备工作,引入js.css <script type="text/javascript" sr ...
- Ubuntu18使用netplan设置多网口绑定
Ubuntu18使用netplan设置网络参考:https://www.cnblogs.com/minseo/p/11325384.html 修改配置文件 /etc/netplan/50-cloud- ...
- 【ARTS】01_45_左耳听风-201900916~201900922
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 微服务Consul系列之集群搭建
在上一篇中讲解了Consul的安装.部署.基本的使用,使得大家有一个基本的了解,本节开始重点Consul集群搭建,官方推荐3-5台Server,因为在异常处理中,如果出现Leader挂了,只要有超过一 ...