PHP 语言标记

因为 PHP 是兼容当时的主流语言,所以 PHP 有四种标记方式:

  • <?php PHP 代码 ?>。这是 PHP 最为正宗的语言标记,称为标准风格标记、XML 风格标记等,推荐使用
  • <? PHP代码 ?>。这是 PHP 语言标记的简便写法,称为短风格标记,不建议使用,因为能在 Apache 中禁用这种标签
  • <% PHP代码 %>。这是为了兼容习惯了 ASP 和 JSP 的程序员,称为 ASP 风格标记,不建议使用,能在 Apache 中禁用,并且和 ASP、JSP 区分度不高
  • 。这是为了兼容习惯了 JavaScript 的用户,称为长风格标记,不建议使用,冗长并且失去了 PHP 可以随意放置在任意地方的特性,只能嵌入 HTML 中,而不能在标签中使用

注释

PHP 的注释也是参照主流的开发语言设置的,也含有兼容其他语言的部分,其注释类型主要有以下四种:

  • //(单行注释)。注释掉 "//" 后面的所有内容(包括其他注释符)
  • /* 注释内容 */(多行注释)。注释掉符号内包裹的所有内容,不能嵌套,也不能和文档注释混用
  • /** 注释内容 */(文档注释)。作用和多行注释一样,但可以被提取出来形成帮助这一类东西
  • # 注释内容(脚本注释)。作用和单行注释一样,目的是兼容有这种习惯的开发者

PHP 编程规范

两个空行

  • 一个源文件的两个代码片段之间
  • 两个类的声明之间

一个空行

  • 两个函数声明之间
  • 函数内的局部变量和函数的第一条语句之间
  • 块注释或单行注释之前
  • 一个函数内的两个逻辑代码段之间

空格

  • 空格一般应用与关键字与括号之间,但是函数名称与左括号之间不加空格
  • 一般在参数列表中的逗号后面加上空格
  • 数学算式的操作数和运算符之间应添加空格(二进制运算与一元运算符除外)
  • for 语句中的表达式应该用分号分开,后面添加空格
  • 强制类型转换语句中的强制类型的右括号与表达式之间应该添加空格

变量

PHP 与 JavaScript 一样,是一种弱类型的编程语言,也就是说,不必在定义 PHP 变量时就声明其类型。

  • 使用规则:使用时必须在变量名前面加上 "$" 符号,否则不会当做变量处理
  • 声明规则:声明变量时也需要加 "$",声明时必须赋值,系统会根据值来设置变量类型

可变变量

PHP 可以将某个变量的值做为变量名,如:$a = 'b';,$$a 就是代表 $b,如果修改 $a 的值,$$a 需要重新定义,但是 $b 仍然可以使用

变量的引用

PHP 的变量引用是将两个变量关联起来,并不是两个变量对应同一块内存空间,删除其中一个变量不会对另一个变量产生任何影响,只是少了关联关系而已

命名规则

  • 可以使用系统关键字为变量命名,因为 PHP 的变量都带有 "$",可以区分关键字与变量
  • 不能以数字开头
  • 不能含有 PHP 的运算符,如:"+"、"-"、"*"、"/"等
  • PHP 只有变量和常量区分大小写,其余不区分

数据类型

PHP 提供了 8 种基本的数据类型,分为:标量类型(1-4)、复合类型(5-6)、特殊类型等(7-8)

  1. 整型:int、integer、long
  2. 布尔型:bool、boolean(与 bool 相同,兼容程序员习惯)
  3. 浮点型:float、double、real(real 似乎可以和 double 等价,PHP 并没有规定它们的精度区别)
  4. 字符串:string
  5. 数组:Array
  6. 对象:Object
  7. 资源类型:resource
  8. 空类型:NULL(变量为空即代表变量不存在)

数据类型补充说明

与布尔 false 相等的值

  • false("false"为 true)
  • 0
  • 0.0
  • " "或者"0"
  • 没有成员变量的数组(array())
  • 没有单元的对象(仅适用于 PHP4)
  • 特殊类型 NULL(包括尚未设定的变量)

整型的数据溢出

整型数值最大范围为 ±2147483647,如果用超出范围的数赋值给整型变量,整型变量会提升为 float,如果强制使用 int 存储,则溢出的部分重新加在最小值处,直至最后的值在整型数据区间内为止,此时的值为该数的 int 型数据

浮点类型的精度

浮点型最大精度为小数点后15位,永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等

字符串中的变量解析

假设有一个变量 $beer,我们需要输出 "$beers",此时不是解析成变量 $beer,而是解析成 $beers,要解析成 $beer 的话可以使用 {$beer}s,或者 ${beer}s

字符串中的定界符

可以使用 "<<<" 后接定界符,定界符除了不能初始化类成员外,和双引号作用相同,定界符的结束符需要在第一列,如:


  1. $string = <<<EOF
  2. 随便写文本
  3. 这里的所有文本都将成为变量的值
  4. 可以出现任意变量、引号、转义等
  5. EOF;

类型转换

PHP 中有两种类型转换方式,其中一种为自动转换,将小的数据类型转换为较大的数据类型时自动发生;另一种为强制转换,强制转换有三种方式:

  • setType(变量名, 类型);。此函数会直接修改变量的数据类型,是不可逆操作,有可能丢失精度
  • 变量2 = (类型)变量1;。不改变 变量1 的数据类型,直接将转换后的值赋值给 变量2
  • 变量2 = 类型val(变量1);。调用函数,不改变 变量1 的数据类型,直接将转换后的值赋值给 变量2。例如:$b = intval($a);

与变量有关的函数

  • isset(变量);。判断变量是否存在,如果值为 NULL 也等价于不存在
  • unset(变量);。释放变量所占资源
  • setType(变量, 类型);。改变变量数据类型
  • getType(变量);。获取变量数据类型
  • empty(变量);。判断变量是否为空
  • var_dump();。输出变量的类型和值
  • is_类型(变量);。判断变量是否为某个类型,如:

  1. is_int()
  2. is_array()
  3. is_resource()
  4. is_scalar()——是否为标量
  5. is_numeric()——是否为数字或数字字符串
  6. is_callable()——判断是否为有效函数名

常量

  • 定义:define("常量名", 值);
  • 使用:直接使用常量名,不需要加 "$"
  • 命名习惯:全部大写,使用 "_" 区分单词
  • 常量的类型:只能是标量类型
  • 相关函数:defined("常量"),判断常量是否已经定义
  • 注意事项:不能使用 unset() 删除常量;不论何时都不加 "$"

特殊常量

PHP 中的特殊常量有 2 种:预定义常量、魔术常量。

预定义常量是由系统预先设定好的,比如说:M_PI:数学中的 π

魔术常量每次的取值都不相同,是和运行环境有关的常量,如:


  1. __FILE__:取文件全路径名
  2. __LINE__:取代码行数
  3. __FUNCTION__:取调用的函数名
  4. PHP_VERSION:取当前 PHP 版本

易学PHP——PHP基础知识的更多相关文章

  1. IT运维的五大基础知识

    IT运维的五大基础知识 | 浏览:331 | 更新:2014-09-25 11:36 IT运维对于很多企业都很重要,接下来运维的一些基础知识天天客服IT运维总监龙少文,就给大家介绍下IT运维的基础知识 ...

  2. Java之--Java基础知识

    一.软件基础知识 1.软件:一系列按特定顺序组织的计算机数据和指令的集合. 1)系统软件:DOS.windows.linux. 2)应用软件:QQ.扫雷等. 2.软件开发就是制作软件. 3.人与计算机 ...

  3. [JIT_APP]Java基础知识总结

    一.Java语言的基础知识 1. 开发Java语言的公司 美国Sun(Sum Microsystems)公司开发.   2.Java的3个版本 J2SE(Java2 Standard Edition) ...

  4. CSS基础知识解析

    一.基础知识 1.1 CSS组成 css 样式由选择符和声明组成,而声明又由属性和值组成,如下图所示: 选择符:又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝 ...

  5. web前端基础知识学习网站推介

    内容:一.基础知识及学习资料1. HTML入门学习:http://www.w3school.com.cn/html/index.aspHTML5 入门学习:http://www.w3school.co ...

  6. ArcGIS API for JavaScript开发初探——基础知识

    1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...

  7. java基础知识一

    1.计算机基础知识概述 (1) 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速处 ...

  8. Java复习(一)——Java语言概述、开发环境、基础知识

    设计模式:在各种应用系统中被大量应用,是设计的“常用套路” 作为Java WEB开发人员,需要掌握HTML/CSS/JS和数据库相关知识 常用的应用程序框架:Spring MVC,Spring Boo ...

  9. 「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指南」一份涵盖大 ...

随机推荐

  1. Logstash 父子关系 配置

    最近在使用Lostash的过程中遇到了一个问题:在一个log文件里包含两类数据,而且两类数据之间存在父子关系,那如何使用lostash的configuration实现这个需求呢 思路: 首先定义父事件 ...

  2. BZOJ1801:[Ahoi2009]chess 中国象棋

    Time Limit: 10 Sec  Memory Limit: 64 MB Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置 ...

  3. .Net“/”应用程序中的服务器错误 超过了最大请求长度 错误解决办法

    错误如下: 错误提示: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpE ...

  4. RabbitMq 集群配置

    1. RabbitMQ 所需的附属安装包 1.1  openGL安装 执行命令: [root@localhost local]# yum install mesa-libGL-devel mesa-l ...

  5. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中

    最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...

  6. 解决: maven编译项目报“非法字符: \65279 ”错误

    打包maven项目的时候,出现异常: [INFO] ------------------------------------------------------------------------ [ ...

  7. The remote name could not be resolved问题的解决方法

    网站如果绑定了代理ip,内部跳转的时候,就会报The remote name could not be resolved错误,这个错误很难排查,网上也没有多少可参考的例子 现在记录下解决方法,以备参考 ...

  8. javascript for循环练习

    有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问几年后有多少对兔子,幼兔.小兔.成兔对数分别是多少. 幼兔 1 小兔 0 成兔 0幼兔 0 小兔 1 成兔 0 幼兔 1 小兔 ...

  9. 测试webAPP时图标背景一片黑色

    写了个web小程序,打包成APP后安装到手机里,在魅族手机里显示是正常的,但是在EMUI和MIUI中却显示一片黑色,搞了半天才发现原来是因为EMUI会自动给应用的图标裁剪圆角并加上背景色,背景色是系统 ...

  10. 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别

    不少同学问,不都是刷新吗?还有什么区别?其实,还是有的. 其中,在地址栏按回车又分为两种情况.一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP ...