PHP 基础知识

基本语法


PHP标记

<?php
?>
//短标记
<?
?>

注释

PHP 支持 C,C++ 和 Unix Shell 风格(Perl 风格)的注释。

<?php
    echo "This is a test"; // This is a one-line c++ style comment
    /* This is a multi line comment
       yet another line of comment */
    echo "This is yet another test";
    echo 'One Final Test'; # This is a one-line shell-style comment
?>

类型


简介

PHP 支持 8 种原始数据类型。
四种标量类型:

  • boolean(布尔型)
  • integer(整型)
  • float(浮点型,也称作double)
  • string(字符串)

两种复合类型:

  • array(数组)
  • object(对象)

最后是两种特殊类型:

  • resource(资源)
  • NULL(无类型)

Boolean 布尔类型

boolean 表达了真值,可以为 TRUE 或 FALSE。

要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。

要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。
当转换为 boolean 时,以下值被认为是 FALSE:

  • 布尔值 FALSE 本身
  • 整型值 0(零)
  • 浮点型值 0.0(零)
  • 空字符串,以及字符串 "0"
  • 不包括任何元素的数组
  • 不包括任何成员变量的对象(仅 PHP 4.0 适用)
  • 特殊类型 NULL(包括尚未赋值的变量)
  • 从空标记生成的 SimpleXML 对象

所有其它值都被认为是 TRUE(包括任何资源)。

integer 整型

整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。

二进制表达的 integer 自 PHP 5.4.0 起可用。

整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18。

PHP 不支持无符号整数。

如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。
PHP 中没有整除的运算符。1/2 产生出 float 0.5。值可以舍弃小数部分强制转换为 integer,或者使用 round() 函数可以更好地进行四舍五入。

<?php
var_dump(25/7);         // float(3.5714285714286) 
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4) 
?>

从布尔值转换:FALSE 将产生出 0(零),TRUE 将产生出 1(壹)。
从浮点型转换:当从浮点数转换成整数时,将向下取整。

如果浮点数超出了整数范围(32 位平台下通常为 +/- 2.15e+9 = 2^31,64 位平台下通常为 +/- 9.22e+18 = 2^63),则结果为未定义,因为没有足够的精度给出一个确切的整数结果。在此情况下没有警告,甚至没有任何通知!

float 浮点型

浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。

对于其它类型(除了string)的值,其情况类似于先将值转换成整型,然后再转换成浮点。

自 PHP 5 起,如果试图将对象转换为浮点数,会发出一条 E_NOTICE 错误消息。

某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是 FALSE
由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。

string 字符串

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。
一个字符串可以用 4 种方式表达:

  • 单引号
  • 双引号
  • heredoc
  • nowdoc(自 PHP 5.3.0 起)

heredoc

第三种表达字符串的方法是用 heredoc 句法结构: <<< 。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。
结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。

要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,比如在 UNIX 和 Mac OS X 系统中是 \n,而结束定界符(可能其后有个分号)之后也必须紧跟一个换行。

如果不遵守该规则导致结束标识不“干净”,PHP 将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP 将会在最后一行产生一个解析错误。

Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义,但是上文中列出的转义序列还可以使用。变量将被替换,但在 heredoc 结构中含有复杂的变量时要格外小心。

nowdoc

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则,但是 nowdoc 中不进行解析操作。

变量解析

推荐阅读更多精彩内容

  • 软件体系结构 1.单主机结构 界面显示、业务逻辑和数据存取功能都是在用户主机上实现,需要下载软件并安装,易盗版 2...
    sidney_c阅读 353评论 2 3
  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 2,720评论 4 97
  • 1. 字符串中的单引号与双引号的区别? 两者均能表示字符串,不同之处在于双引号包含的变量($str)会被自动替换成...
    php_bruce阅读 473评论 0 0
  • 简介 PHP 支持 8 种原始数据类型。 四种标量类型: boolean(布尔型)/ integer(整型) / ...
    零一间阅读 414评论 0 0
  • 简介:PHP是一种通用开源脚本语言,运行在服务器端 执行原理: 客户端向服务器发送一个请求,如果请求的是HTML,...
    Kylin824阅读 149评论 0 1
  • 对称加密的特点 加密/解密使用相同的密钥 是可逆的 经典算法 DES 3DES AES 废话不多说 直接上 工具类...
    严兵胜阅读 223评论 0 1
  • 也许成长大多都是痛的,就像一颗小树苗,在它长成参天大树的那一刻,它是历经风吹雨打,日晒雨淋的。不仅是树,也许每个人...
    安小魚儿阅读 278评论 0 2
  • 这不是深刻理性思考的结果,只是我片刻的思绪。 有机会去重庆,一定要去一趟钓鱼城。 我在收集...
    亲亲男盆友阅读 290评论 0 0
  • 祝您成功! 晚安好梦!
    64c6e0c88cc6阅读 128评论 0 1