PHP支持下列8种类型

标量类型 scalar type
整数 integer
浮点数 float double
布尔 boolean
字符串 string

特殊类型 special type
NULL
资源 resource

符合类型 compound type
数组 array
对象 object

整数
echo (10); //显示十进制整数10
echo (010); //显示八进制整数8
echo (0x10); //显示十六进制整数16
echo (0b10); //显示二进制整数2
echo PHP_INT_SIZE; //表示整数integer值的字长
echo PHP_INT_MAX; //显示最大整数
echo PHP_INT_MIN; //显示最小整数

浮点数 float double
echo (-123.456);
echo (+12.3);
echo (0.123456789012342);
echo (1.2345E+2);
echo (-1223.45e-3);

布尔 boolean 用来表示TRUE或者FALSE两种值 没有字母大小写之分
当我们将布尔数据转化为值类型时 TRUE会转换成1 FALSE会转化成0
当我们将布尔数据转化为字符串类型时 TRUE会转换成"1" FALSE会转化成空字符串""
当我们将非布尔数据转化为布尔类型时 只有下列数据会转成FALSE,其他数据均会转化成TRUE,包括所有负数以及任何有效资源
整数0
浮点数0.0
空字符串"" 与字符串"0"
没有元素的数组
没有成员的对象
特殊类型NULL(包括尚未设置的变量)

字符串
单引号字符串 single quoted string
双引号字符串 double quoted string
heredoc 语法
nowdoc 语法

single quoted string
echo ('happy birthday!'); //显示 happy birthday
echo ('C:\\Win'); //显示C:\Win
echo ('I am \'Jean\'.'); //显示 I am 'Jean' \为转义字符 会被解析为'

double qouted string
echo ("I am \"Jean"\.");
$str = "Mary";
echo ("Hi.$str"); //显示str 会被解析为字符串 Mary
echo (\u{00A9}); //显示UTF-8字符 U+00A9表示© 符号
echo (\u{A9}); //显示UTF-8字符 U+00A9表示© 符号 开头的0可以省略

英语学习 parser 解析器

heredoc语法
php 中的 heredoc技术是php用来引用字符串的一种方式
这种表示法有固定的格式 一开始是<<< 运算符 接着就是标识符和换行 然后是字符串
最后以同一个标识符结尾 标识符的命名规则和变量相同

<?php
echo <<< STR1
My name is Jean <br>
Happy birthday to you!
STR1;
?>

nowdoc语法 针对单引号字符串的
here语法会进行变量解释,而newdoc语法不会
<?php
$name = "Jean";
echo <<<'STR1'
My name is $name.<br>
Happy birthday to you!
STR1;
?>

我们可以使用数组 array的概念存取字符串中的字符,而且键 key的起始值为0 举例来说 假设 $str = "Day"; 那么第一个字符为$str[0] 即D
第二个字符为$str[1],即a 其他以此类推如果要变更字符串的字符 假设要将第一个字符更改为P 那么可以写成$str[0] = "P"; $str的值就变成了"Pay"

NULL
凡是尚未设置值得变量 值都赋值为常数NULL的变量和值被unset的函数清除的变量均会被视为NULL

资源
资源 resource 代表的是一种特殊值 用来指向PHP程序的外部资源 例如 数据库 图形图像 等

$my_resource = mysql_connect();

一般来说 我们并不需要手动释放资源 PHP ZEND Engine 会自动管理除了数据库之外的所有资源,当我们要是手动释放资源的时可以将指向资源的变量设置为NULL
$my_resource = NYLL;

类型转换
PHP会视实际情况自动转换类型

检查类型
PHP提供了可以检查数据类型的几个函数
gettype(arg) - 返回参数arg的类型
is_integer(arg) is_int(arg) in_long(arg) 若参数为整数类型 就返回true 否则返回false
is_float
is_bool
is_string
is_null
is_array
is_resource
is_object
is_numberic
is_scalar

明确转换类型
echo (int)TRUE //转型表达式(int) 将true转化为整数1,故显示1
float double real bool boolean string array object
使用settype(var,type)
$var = TRUE;
settype($var,"integer");
echo $var;

使用intval(var) floatval(var) strval(var) 将参数分别转换为integer float string 类型

变量命名规则
PHP区分大小写
$
第一个字符可以是英文字母和下划线

PHP有自定义变量和预定义变量 上面说的是自定义变量 下面是预定义变量
$_SERVER
$_ENV
$_COOKIE
$_GET
$_POST
$_FILES
$php_errormsg 前一个错误信息
$_REQUEST Request变量
$_SESSION Session变量
$_GLOBAL Global变量

PHP属于动态类型的程序设计语言 变量使用前无需声明类型 同时可以在运行期间视实际情况动态转换类型

一般赋值
$myName = "小丸子"; //变量myName的类型为string

引用赋值
$var1 = "John";
$var2 = &$var1;
$var2 = "Mary";
echo $var2; //显示Mary

可变变量
$var = "Happy";
$$var = "Birthday";
echo $var; //显示变量var的值 Happy
echo $$var; //显示变量Happy的值 Birthday
echo $Happy; //显示变量Happy的值 Birthday

作用域 scope
全局变量 global variable
函数 function
局部变量 local variable

变量处理函数
isset(arg) 若参数arg的值不是NULL 返回true 否则false
unset(arg) 清除参数arg的值 使之成为NULL
empty(arg) 若参数arg的值是空的,返回true 否则返回false 所谓空的 整数0 浮点数0.0 空字符串 "" 字符串"0" 空数组 NULL FALSE var $var 在类内声明并且尚未设置值的变量
intval(arg) 返回参数arg的整数值
floatval(arg)返回参数arg的浮点数

常数 constant
php提供用户自定义常数和预定义常数两种
自定义
define(name,value[,case_insensitive])

define("PI",3.14);
define("X",10*5);
define("Y",X+2);

预定义的常数 predefined constant
PHP_INT_SIZE
PHP_INT_MAX
...

魔法常数 magic constant
_LINE_ 文件的行数
_FILE_ 完整的路径与文件名
_DIR_ 文件所在的目录
_FUNCTION_ 函数名称
_CLASS 类型名
_METHOD 方法名称
_NAMESPACE_ 命名空间名称

运算符
算术运算符 - + * / % **
字符串运算符 连接字符串 小数点.
递增递减运算符++ -- ++$a $a++ --$a $--;
比较运算符 == != <> < > <= === !== <=> ??
位运算符
逻辑运算符 !and or xor && ||
赋值运算符 = += -+ *= /= %=
条件表达式 ?: 10>2?"YES":"NO"; 结果true返回第一个表达式的值,否则返回第二个表达值的值
错误控制运算符 $a = @file("c"\hellop.php");
执行运算符 ``的用途是执行shell命令
运算符优先级 加括号改变优先级

php的输出函数
echo str1[,str2,[,str3...]]
echo '<i>Hello!</i><br>';
echo 'happy','birthday','<br>';
echo '<a href="default.htm">回首页</a>';

print str 只接受一个参数 并且print有返回值
print 'hello';

var_dump(var1[,var2[,var3...]]) 输出一个或多个变量
var_dump ($a,$b,$c);

PHP学习 类型 变量 常数 运算符的更多相关文章

  1. Java笔记2-数据类型,变量,Java运算符

    我们编写软件,目的是为了高效的操作(增,删,改,查)数据. 数据类型 1.基本类型(8种)byte 字节型 -128~127short 短整型 -32768~32767int 整型 -21474836 ...

  2. C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2

    C#.NET学习笔记7---算术运算符 2013/9/6 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com 1.Consol ...

  3. Objective-C中的数据类型、常量、变量、运算符与表达式

    1.Objective-C中的数据类型: Objective-C中的基本数据类型有:int.char(-128-127).float.double.BOOL,Byte(0-255) Id类型相当于(等 ...

  4. python3 第五章 - 什么是变量、运算符、表达式

    在读这一章时,运算符的内容比较多,不要去死记.现在记不住也没有关系,现在只要有这个印象.在后面的学习中,会慢慢加深理解,在理解中去记就容易得多了 1.变量 什么是变量?通俗的讲,就是存储在内存中可以变 ...

  5. JavaScript:学习笔记(6)——New运算符

    JavaScript:学习笔记(6)——New运算符 new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例. 快速开始 当你使用new关键字的时候,会 创建一个新的对象 将th ...

  6. Java基础(变量、运算符)

    第2天 Java基础语法 今日内容介绍 u 变量 u 运算符 第1章 变量 1.1 变量概述 前面我们已经学习了常量,接下来我们要学习变量.在Java中变量的应用比常量的应用要多很多.所以变量也是尤为 ...

  7. GO语言基础(结构+语法+类型+变量)

    GO语言基础(结构+语法+类型+变量) Go语言结构 Go语言语法 Go语言类型 Go语言变量       Go 语言结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 &a ...

  8. Java基础语法01——变量与运算符

    本文是对Java基础语法的第一部分的学习,包括注释:标识符的命名规则与规范:变量的数据类型分类以及转换:以及六种运算符(算术.赋值.比较.逻辑.三元和位运算符).

  9. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

随机推荐

  1. vcenter server appliance(vcsa) 配置IP的方法

    方法一: vcenter server appliance 5.1 及以后版本包括5.5,在安装完毕后,console界面是没有网络配置项的,如果需要进行IP配置,可以login后,输入命令yast( ...

  2. [LOJ 2720][BZOJ 5417][UOJ 395][NOI 2018]你的名字

    [LOJ 2720][BZOJ 5417][UOJ 395][NOI 2018]你的名字 题意 给定一个大串 \(S\) 以及 \(q\) 次询问, 每次询问给定一个串 \(T\) 和区间 \([l, ...

  3. Symbol Table Applications

    符号表应用 在计算机发展的早期,符号表帮助程序员从使用机器语言的数字地址进化到在汇编语言中使用符号名称:在现代应用程序中,符号名称的含义能够通行于跨域全球的计算机网络.快速查找算法曾经并继续在计算机领 ...

  4. $Gauss$消元

    $Gauss$消元 今天金牌爷来问我一个高消的题目,我才想起来忘了学高消... 高斯消元用于解线性方程组,也就是形如: $\left\{\begin{matrix}a_{11}x_1+a_{12}x_ ...

  5. Zookeeper入门(二)之基础

    在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.本文主要包含如下内容:1.Architecture(架构)2.Hierarchical namespace(层次命名空 ...

  6. Python2.7-io

    io 模块,用于处理流数据,在 python2 下,是内置 file 对象的另一种选择,在 python3 下,此模块是默认的文件和流数据的接口. 1.模块继承关系 IOBase--RawIOBase ...

  7. windows10 + anaconda + tensorflow-1.5.0 + python-3.6 + keras-2.2.4配置和安装

    windows10 + anaconda + tensorflow-1.5.0 + python-3.6 + keras-2.2.4配置和安装 (base) C:\Users\jiangshan> ...

  8. loadrunner中pacing设置01

    之前一直也用pacing值来调节TPS,一直觉得它和think time没啥区别.这次项目中,和同事就此展开了讨论,细细一研究发现pacing值门道还是很多的. 如下面三个图: 上图是pacing的三 ...

  9. 20155323刘威良《网络对抗》Exp7 网络欺诈防范

    20155323刘威良<网络对抗>Exp7 网络欺诈防范 实践目标 理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 实践内容 (1)简单应用SET工具建立冒名网站 (1分 ...

  10. JavaEE笔记(十三)

    #单一职责原则 一个类只做一件事 #开闭原则 拓展开,修改源码闭 #动态代理 1 基于接口的方式 jdk的动动代理2 基于类的方式 cglib的代理 #SSH整合 1.spring(容器)    1& ...