变量类型是指保存在该变量中的数据类型。计算机操作的对象是数据在计算编程语言世界里,每一个数据也都有它的类型,具有相同类型的数据才能彼此操作。例如书柜是装书用的、大衣柜是放衣服用的、保险柜是存放贵重物品的、档案柜式存放文件用的......

PHP中提供了一个不断扩充的数据类型集,可以将不同数据保存在不同的数据类型中。但PHP语言是一种弱类型检查的语言。和其他语言不同的是,变量或者常量的数据类型由上下文决定。在强类型语言中,变量要先指定类型,然后才可以存储对应指定类型的数据。而PHP等若类型语言中,变量的类型是有存储的数据据决定的。例如,强类型语言就好比在制作一个柜子之前,就要决定这个柜子是什么类型的柜子,如果确定了是书柜,那么就只能用做装书用。而在弱类型语言中,同一个柜子,你用来装书它就是书柜,用来装衣服它就是衣柜,具体什么类型有存放的内容决定。

5.4.1 类型介绍

变量有多种类型,PHP中支持以下八种原始类型,为了确保代码的易读性,本书中还介绍了一些伪类型,例如mixed、number、callback。

  1. boolean (布尔型)
  2. integer (整形)
  3. float (浮点型,也称double)
  4. string (字符串)
  5. array (数组)
  6. object (对象)
  7. resource (资源)
  8. NULL

变量的类型通常不是由程序员设定的,确切地说,是由PHP根据该变量使用的上下文在运行时决定的。如果想查看某个表达式的值和类型,可以使用函数var_dump()。

 <?php
$bool = TRUE; //一个布尔型
$str = "foo"; //一个字符串类型
$int = 12; //一个整型 var_dump($bool); //直接输出变量$bool的类型和值bool(true)
var_dump($str); //直接输出变量$str的类型和值string(3) "foo"
var_dump($int); //直接输出变量$int的类型和值 int(12)
?>

5.4.2 布尔型(boolean)

布尔型是PHP中标量类型之一,这是最简单的类型。boolean表达了TRUE或FALSE。即“真”或“假”。在PHP进行关系运算(或称比较运算)以及布尔运算(或称逻辑运算)时,返回的都是布尔结果,它是构成PHP逻辑控制的判断依据。

在PHP中布尔型不光是只有TRUE或FALSE两个值,当运算符,函数或者流程控制需要一个boolean参数时,任何类型的值PHP都会自动转换成布尔型的值。以下值被认为是FLASE,所以其他值都被认为是TRUE(包括任何资源)。

  • 布尔值FALSW。
  • 整形值0(零)为假,-1和其他非零值(不论正负)一样,被认为是TRUE。
  • 浮点型值0.0(零)。
  • 空白字符串和字符串"0"。
  • 没有成员变量的数组。
  • 没有单元的对象(仅适用于PHP4)。
  • 特殊类型BULL(包括尚未设定的变量)。
 <?php
var_dump((bool) ""); //bool(false)
var_dump((bool) 1); //bool(true)
var_dump((bool) -2); //bool(true)
var_dump((bool) "foo"); //bool(true)
var_dump((bool) 2.3e5); //bool(true)
var_dump((bool) array(12)); //bool(true)
var_dump((bool) array()); //bool(false)
var_dump((bool) "false"); //bool(true)
?>

5.4.3 整形(integer)

整形也是PHP中标量类型之一,整型变量用于存储整数,例如:{...,-2,-1,0,1,2,...}中的一个数。在计算机语言中,整形数据不仅是在前面加上可选的符号(+或者-)表示整数或者负数,也不是只有我们常用的十进制数。还可以用十六进制或八进制符号指定,如果用八进制符号,数字前必须加上"0"(零),用十六进行符号前必须加上“0x”。声明整形数据如下所示:

 <?php
$int = 1234; //十进制数
$int = -123; //一个负数
$int = 0123; //八进制数(等于十进制的83)
$int = 0x1A; //十六进制数(等于十进制的26)
?>

其中八进制、十进制和十六进制,都可以用“+”或“-”开头来表示数据的正负,其中“+”都可以省略。八进制与十进制一致,但由0~7的数字序列组成。十六进制由0~9的数字或A~F的字母组成的序列。但在表达式中计算的结果均以十进制数字输出。

整型数值有最大的使用范围,整形数的字长和平台有关,对于32位的操作系统而言,最大值整数位二十多亿,具体为2147483647。PHP不支持无符号整数,所以不像其他语言那样将整数都变成正数,也就不能将最大值翻一倍。整形的最小值为-2147483648。如果给定的一个数超过了integer的这个范围,将会解释为float。同样,如果执行的运算结果超出了integer这个范围,也会返回float。

<?php
$large_number = 2147483647;
var_dump($large_number); //输出为:int(2147483647) $large_number = 2147483648;
var_dump($large_number); //输出为:float(2147483648) var_dump(0x80000000); //输出为:float(2147483648) $million = 1000000;
$large_number = 50000*$million;
var_dump($large_number); //输出为:float(50000000000)
?>

细说PHP-5.4 变量的类型的更多相关文章

  1. 前端-JavaScript1-5——JavaScript之变量的类型

    5.1 概述 基本类型5种 number          数字类型 string             字符串类型 undefined      undefined类型,变量未定义时的值,这个值自 ...

  2. JavaScript使用构造函数获取变量的类型名

    在JavaScript中,如何准确获取变量的类型名是一个经常使用的问题. 但是常常不能获取到变量的精确名称,或者必须使用jQuery 中的方法,这里 我通过 typeof ,jQuery.type 和 ...

  3. Go语言学习笔记1 变量,类型以及赋值

    1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int ...

  4. JavaScript基础系列(变量与类型)

    以下内容将JavaScript简称为JS 打开本文时不管你是零基础的初学者还是其他语言的老兵,我都想说程序语言的基础支撑起了整个网络世界,不把这些基础学透之后稍复杂的内容会让你寸步难行. 现在先给编程 ...

  5. 使用typeid(变量或类型).name()来获取常量或变量的类型---gyy整理

    使用typeid(变量或类型).name()来获取常量或变量的类型 <typeinfo>  该头文件包含运行时类型识别(在执行时确定数据类型)的类 typeid的使用   typeid操作 ...

  6. Powershell变量的类型和强类型

    Powershell变量的类型和强类型12 12月, 2011  在 Powershell  tagged Powershell教程 / 变量 / 存储 / 数据 / 类型 by Mooser Lee ...

  7. 在C中判断变量存储类型(字符常量/数组/动态变量)

    在C中判断变量存储类型(字符常量/数组/动态变量) 在chinaunix论坛上有人问到关于变量存府类型的问题,我觉得可以写个测试代码加深大家对内存使用和布局的理解.下面我把原问题及处理办法贴出来,限供 ...

  8. 【react】利用prop-types第三方库对组件的props中的变量进行类型检测

    1.引言--JavaScript就是一个熊孩子   1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...

  9. 007-declare 声明变量的类型

    declare [+/-] [选项] 变量名 - 给变量设定类型 + 取消变量的类型 -a 将变量声明为数组型 -i 将变量声明为整形 -x 将变量声明成环境变量 -r 将变量声明为只读变量 -p 显 ...

随机推荐

  1. LOG.ZS.0001.基于Freetype的游戏字体渲染优化思路

    Total Utf8-ucs2 Html_parse Layout Render_string Init_texture Ft_load_glyph 原始 2293 1 26 708 1556 2 1 ...

  2. 整合ssh的时候出现空指针java.lang.NullPointerException

    转自:https://blog.csdn.net/koudailidexiaolong/article/details/9468857 HTTP Status 500 - type Exception ...

  3. Streamline Your App with Design Patterns 用设计模式精简你的应用程序

    Back to Design Patterns Streamline Your App with Design Patterns 用设计模式精简你的应用程序 In Objective-C progra ...

  4. 035--MySQL基本操作

    一.数据库的定义及相关名词解释  数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以 ...

  5. 清理c盘的文件

    C:/Users/用户名/AppData里面默认有三个文件夹,分别是Local,LocalLow,Roaming,简单地来说,都是用来存放软件的配置文件和临时文件的,里面有很多以软件公司或者软件名称命 ...

  6. iOS 拼音 Swift K3Pinyin

    iOS 系统方法支持直接获取拼音,避免了之前各种第三方引入各种MAP或者资源文件.下面是一个Swift版本的简单示例: // swift 4.0 func pinyin(_ string: Strin ...

  7. hihoCoder扩展欧几里得

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h&g ...

  8. P5072 [Ynoi2015]盼君勿忘

    传送门 一开始理解错题意了--还以为是两个子序列相同的话只算一次--结果是子序列里相同的元素只算一次-- 对于一个区间\([l,r]\),设其中\(x\)出现了\(k\)次,那么它的贡献就是它的权值乘 ...

  9. LuoguP2700逐个击破【并查集/生成树/正难则反】By cellur925

    题目传送门 题目大意:给你一棵树,求把其中k个点相互隔离(不连通)所需要的边权代价. 这题我开始是想要求出把k个点联通的最小代价的,但后来发现还是实现起来比较困难,题解里貌似也没有这种做法,于是就鸽了 ...

  10. VMware安装Centos 7,网络连接问题以及解决方案

    转自: https://www.cnblogs.com/owaowa/p/6123902.html 在这里表示万分感谢 在使用CentOS虚拟机后,出现了无法上网的情况,使用主机ping虚机地址可以p ...