易学PHP——PHP基础知识
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)
- 整型:int、integer、long
- 布尔型:bool、boolean(与 bool 相同,兼容程序员习惯)
- 浮点型:float、double、real(real 似乎可以和 double 等价,PHP 并没有规定它们的精度区别)
- 字符串:string
- 数组:Array
- 对象:Object
- 资源类型:resource
- 空类型: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基础知识的更多相关文章
- IT运维的五大基础知识
IT运维的五大基础知识 | 浏览:331 | 更新:2014-09-25 11:36 IT运维对于很多企业都很重要,接下来运维的一些基础知识天天客服IT运维总监龙少文,就给大家介绍下IT运维的基础知识 ...
- Java之--Java基础知识
一.软件基础知识 1.软件:一系列按特定顺序组织的计算机数据和指令的集合. 1)系统软件:DOS.windows.linux. 2)应用软件:QQ.扫雷等. 2.软件开发就是制作软件. 3.人与计算机 ...
- [JIT_APP]Java基础知识总结
一.Java语言的基础知识 1. 开发Java语言的公司 美国Sun(Sum Microsystems)公司开发. 2.Java的3个版本 J2SE(Java2 Standard Edition) ...
- CSS基础知识解析
一.基础知识 1.1 CSS组成 css 样式由选择符和声明组成,而声明又由属性和值组成,如下图所示: 选择符:又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝 ...
- web前端基础知识学习网站推介
内容:一.基础知识及学习资料1. HTML入门学习:http://www.w3school.com.cn/html/index.aspHTML5 入门学习:http://www.w3school.co ...
- ArcGIS API for JavaScript开发初探——基础知识
1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...
- java基础知识一
1.计算机基础知识概述 (1) 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能.是能够按照程序运行,自动.高速处 ...
- Java复习(一)——Java语言概述、开发环境、基础知识
设计模式:在各种应用系统中被大量应用,是设计的“常用套路” 作为Java WEB开发人员,需要掌握HTML/CSS/JS和数据库相关知识 常用的应用程序框架:Spring MVC,Spring Boo ...
- 「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !
本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指南」一份涵盖大 ...
随机推荐
- 简单的androidStudio 添加Jar包
感谢http://blog.csdn.net/ta893115871/article/details/46955791博主的文章, 1新建一个空项目 2在项目下添加一个新的moudle 3在该moud ...
- QML引擎的演进,第一部分
原文链接:Lars Knoll – Evolution of the QML engine, part 1 QML作为一项技术对于Qt的成功变得越来越重要.它允许创建流畅的动画界面,与现今的市场预期相 ...
- [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文
一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...
- 论Segmentation fault
刚开始学c的时候,最头疼的事情是编译总是通不过,郁闷的要死,只要编译通过了,就兴奋的要死.现在,最头疼的事情是什么呢,编译没问题,但是程序跑的时候会出现Segmentation fault! 这个东西 ...
- U-Mail邮件网关提醒:谨防像素图片钓鱼窃密
垃圾邮件和病毒的日益猖獗,既因为邮件在商务往来中扮演着越来越重要的角色,也因为犯罪成本低收益高.近年来,不少为非作歹者致力于通过邮件诈骗牟利,想出了种种奇思妙计,导致相关服务商在安全领域逐年加大研发投 ...
- exception 'yii\base\ErrorException' with message 'Class 'MongoClient' not found'
问题描述: 本来项目运行的好好的,搬了一次办公室(电脑主机一起搬的),第二天的时候就登录不了了. php版本和扩展没有改变,且没有修改任何配置,我尝试重启php5-fpm 服务,又重启nginx服务, ...
- SQL Server 2008 修改表所有者,架构
ALTER SCHEMA 新架构 TRANSFER 旧架构.对象名称
- KMP匹配算法
先来说一下回溯法匹配字符串: 对于主字符串有一个target_index,以target_index(不动)为起点,匹配字符串pattern的长度+target_index为终点,逐个进行比较,当发现 ...
- Window Server 2012 R2 下 IE11 浏览器 无法安装Flash 怎么解决
不知道是不是我这个的系统的问题,不仅仅是图片有问题,Flash也有问题.用IE打开页面,一直提示安装,简直不胜其烦.尽管我有下载很多浏览器,但习惯了IE,所以也没想用其他浏览器代替IE. 刚开始我是点 ...
- .NET HttpClient扩展
/// <summary> /// HttpClient扩展类 /// </summary> public static class HttpClientExtensions ...