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

字符串中的定界符

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


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

类型转换

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

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

与变量有关的函数

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

is_int()
is_array()
is_resource()
is_scalar()——是否为标量
is_numeric()——是否为数字或数字字符串
is_callable()——判断是否为有效函数名

常量

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

特殊常量

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

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

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


__FILE__:取文件全路径名
__LINE__:取代码行数
__FUNCTION__:取调用的函数名
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. VC++ 最小化到托盘、恢复

    所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分.在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区. 一.托盘编程相关函数   ...

  2. Lisp中编写宏的步骤以及规范

    一.编写步骤 1.编写示例的宏调用以及它应当展开的代码,反之亦然. 2.编写从示例调用中生成手写展开式的代码. 3.确保宏抽象不产生"泄露". 二.遵循规则 1.除非有特殊理由,否 ...

  3. 转载:Solr的自动完成实现方式(第一部分:facet方式)

    转自:http://www.cnblogs.com/ibook360/archive/2011/11/30/2269059.html 大部分人已经见过自动完成(autocomplete)的功能了(见下 ...

  4. c++常见面试题

    1.class和struct的区别? 在c++中,在class中声明的成员默认为private成员,而在struct中声明的成员默认为public成员,class的默认继承方式为private,str ...

  5. java的Map及Map.Entry解析

    Map<K,V>是以键-值对存储的(key-value), 而Entry<K,V>是Map中的一个接口,Map.Entry<K,V>接口主要用于获取.比较 key和 ...

  6. Android新建数据库和建表demo

    public class DBHelper extends SQLiteOpenHelper{ public final static String DATABASENAME ="diary ...

  7. JQuery源码解析-- 对象的创建

    使用 $("a") 返回的对象就不再是一个简单的DOM对象了,而是一个复杂的JQuery对象. 那么JQuery是怎么创建对象的. 为了便于分析,我将JQuery中复杂的代码简化了 ...

  8. php入门,配置wampserver

    wamp安装过程中将网站的根目录设置在www目录下,这里记录如何定义自己的根目录,以便以后需要是查看 1.启动wampserver,左键选择apache下的httpd.conf,将文件中Documen ...

  9. 约瑟夫环问题(c++)

    #include <iostream> struct node{ int payload; node* next; node(int payload){this->payload = ...

  10. Python模块:collections

    collections模块常用的数据类型: (1)namedtuple(): #创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素. fr ...