一、PHP 简介

1. PHP是什么

  • PHP:Hypertext Preprocessor,即超文本预处理器。
  • PHP是一种跨平台、服务器端、可嵌入HTML文件的脚本语言。
  • 嵌入了PHP代码的HTML文件称为PHP文件,扩展名通常为.php。

2. PHP工作流程

  • 浏览器

    • 主要功能是显示HTML网页内容,并让用户与这些网页内容产生互动
  • Web服务器

    • WEB服务器的功能是解析HTTP。
    • 目前可用的WEB服务器有很多,Apache服务器、IIS服务器、omcat服务器、Nginx等。
  • PHP预处理器

    • 主要功能是解析PHP代码
  • 数据库服务器

    • 提供数据查询和数据管理服务的软件

二、PHP 基础

(1)PHP 标记符

标记:区分HTML与PHP代码,使用标记对PHP代码进行标识。

标记类型 开始标记 结束标记 开启项
标准标记 <?php ?>
短标记 <? ?> short_open_tag
ASP式标记 <% %> asp_tags
Script标记 <script language="php"> </script>

在PHP7中,仅支持标准标记和短标记。

(2)PHP 注释

注释:可以使用注释来进行解释和说明。

分类 风格 示例
单行注释 C++风格的单行注释 “//“ // 输出一句话
单行注释 Shell风格的注释 “#” # 输出一句话
多行注释 C 风 格 的 多 行 注 释 “/……/” /* echo 'Hello, PHP';
echo 100 + 200; */

(3)PHP 标识符

标识符:自定义一些符号来标记一些名称。

标识符的定义需要遵循一定的规则,具体如下:

  • 标识符只能由字母、数字、下划线组成,且不能包含空格。
  • 标识符只能以字母或下划线开头的任意长度的字符组成。
  • 标识符区分大小写,类和关键词除外。
  • 如果标识符由多个单词组成,那么应使用下划线进行分隔。

(4)输出语句

分类 说明
echo 可将紧跟其后的一个或多个字符串、表达式、变量和常量的值输出到页面中。
多个数据之间使用逗号 “,” 分隔。
print 与 echo 的用法相同,唯一的区别是print只能输出一个值。
print_r() PHP的内置函数,它可输出任意类型的数据,如字符串、数组等
var_dump() 不仅可以打印一个或多个任意类型的数据,还可以获取数据的类型和元素个数。

(5)常量

  • 概念:常量就是在脚本运行过程中值始终不变的量。
  • 特点:一旦被定义就不能被修改或重新定义。
  • 举例:数学中的圆周率π就是一个常量,其值就是固定且不能被改变的。
  • 命名规则:遵循标识符的命名规则,默认大小写敏感,习惯上常量名称总是使用大写字母表示。

(6)常量的定义和使用

1. 常量定义使用 define() 函数,其基本格式如下:

bool define( string $name, mixed $value[, bool $case_insensitive = false] )
  • $name:表示常量名称的字符串。
  • $value:常量值,可以是字符串、整数或浮点数。
  • $case_insensitive:其值为true或false,false为默认值。true表示该常量名称在使用时不区分大小写,false

    表示要区分大小写。(即 true:大小写不敏感;false:大小写敏感。)

2. 可以用函数 constant() 来获取常量的值。

通过 name 返回常量的值。当你不知道常量名,却需要获取常量的值时,constant() 就很有用了。也就是常量名储存在一个变量里,或者由函数返回常量名。

mixed constant( string $name )

3. defined() 函数可用于测试常量是否已经定义。

bool defined( string $name )

如果名称 name 的常量已定义,返回 TRUE;未定义则返回 FALSE。

(7)预定义常量

常量名 功能描述
_FILE_ PHP程序文件名
_LINE_ PHP程序中的当前行号
PHP_VERSION PHP程序的版本,如 “7.1.4”
PHP_OS 执行PHP解析器的操作系统名称
TRUE 该常量是一个真值(true)
FALSE 该常量是一个假值(false)
NULL 该常量是一个空值(null)
E_ERROR 该常量表示错误级别为致命错误
E_WARNING 该常量表示错误级别为警告
E_PARSE 该常量表示错误级别为语法解析错误
E_NOTICE 该常量表示错误级别为通知提醒

(8)变量

  • 概念:变量就是保存可变数据的容器。

  • 组成:在PHP中,变量名是由 $ 和 标识符 组成

  • PHP 变量规则:

    • 变量以 $ 符号开头,其后是变量的名称。
    • 变量名称必须以字母或下划线开头,不能以数字开头。
    • 变量名称只能包含字母数字字符和下划线。
    • 变量名称对大小写敏感。

1. 变量是否设置

isset(mixed $var)
  • 变量不存在

    • 返回 FALSE
  • 变量存在
    • 值为NULL——返回 FALSE
    • 值不为NULL——返回 TURE

2. 删除变量

unset(mixed $var)

(9)变量赋值

由于PHP是一种弱语言,变量不需要事先声明,就可以直接进行赋值使用。

实现方式:

  • 传值赋值:变量默认总是传值赋值。当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量
  • 引用赋值:所谓引用赋值就是在要赋值的变量前添加 “&” 符号。新的变量简单的引用(换言之,"成为其别名" 或者 "指向")了原始变量。改动新的变量将影响到原始变量,反之亦然

(10)可变变量

在变量名称之前加一个 “$” 符号,即可将变量的值作为变量名称。

<?php
$a = 'hello';
$$a = 'world';
echo "$a ${$a}"; // hello world
echo "$a $hello"; // hello world
?>

三、数据类型

(1)boolean 布尔型

这是最简单的类型。boolean 表达了真值,可以为 TRUEFALSE

要指定一个布尔值,使用常量 TRUEFALSE。两个都不区分大小写。

(2)Integer 整型

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

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

要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b

$a = 1234; 			// 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
$a = 0b11111111; // 二进制数字 (等于十进制 255)

(3)Float 浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:

$a = 1.234;
$b = 1.2e3;
$c = 7E-10;

(4)String 字符串

字符串是由连续的字母、数字或字符组成的字符序列。

分别为单引号、双引号、定界符三种语法结构。

1. 单引号

定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ' )。

要表达一个单引号自身,需在它的前面加个反斜线( \ )来转义。要表达一个反斜线自身,则用两个反斜线 ( \\ )。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 \r 或者 \n,并不代表任何特殊含义,就单纯是这两个字符本身。

在单引号字符串中的变量和特殊字符的转义序列将不会被替换。 单引号括起来的字符串被原样输出。

2. 双引号

双引号字符串中的变量被PHP解析为变量值,即字符串中的变量在输出时输出变量的值而不是变量名称。

3. 定界符

3.1 Heredoc 结构

heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。

结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。

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

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
3.2 Nowdoc 结构

就像 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。

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

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

(5)Array 数组

要点 说明
数组构成 数组是由一个或多个数组元素组成的
数组元素 每个数组元素由键(Key)和值(Value)构成
元素的识别名称,也被称为数组下标
元素的内容
映射 键 和 值 之间存在一种对应关系,称之为映射
类型划分 根据键的数据类型,可以将数组划分为索引数组和关联数组

更多内容 请见 PHP笔记——Array 数组

(6)Object 对象

详见面向对象编程

(7)检测数据类型

PHP提供了一组 is_*() 的内置函数,括号里的参数为待要检测的值。如果检测的值符合检测的数据类型,则返回 true,否则返回 false。

函数名称 功能描述
is_bool() 检测是否属于布尔类型
is_string() 检测是否属于字符串类型
is_float() 检测是否属于浮点类型
is_int() 检测是否属于整型
is_null() 检测是否属于空值
is_array() 检测是否属于数组
is_resource() 检测是否属于资源
is_object() 检测是否属于对象类型
is_numeric() 检测是否属于数字或数字组成的字符串

(8)数据类型转换

1. 自动转换

  • 布尔型
类型转换 说明
布尔型->数值型 true->整数1
false->整数0
布尔型->字符串型 true->字符串"1"
false和NULL->空字符串""
  • 数值型
类型转换 说明
数值型->字符串型 整数、浮点数->对应的字符串型数据
数值型->布尔型 整数0、浮点数0.0、NULL以及空数组->false
其他->true
  • 字符串型
类型转换 说明
字符串型->数值型 字符串以合法的数值开始,则会截取字符串头部的数字部分
字符串不是以合法的数值开始,其值为 0(零)
字符串型->布尔型 空字符串""、字符串"0"、NULL以及空数组->false
其他->true

2. 强制转换

  • 使用类型名

  • 使用类型取值函数

  • 特殊点
<?php
var_dump(0.9 == (1-0.1));
var_dump(0.1 == (1-0.9));
?> 运行结果:
bool(true)
bool(false)

原因:计算机运算用的是 二进制, 用二进制表示浮点数(有小数),也带来了运算中的精度问题。

四、运算符

(1)算数运算符

例子 名称 操作符
-$a 取反 -
$a + $b 加法 +
$a - $b 减法 $a 和 $b 的差。
$a * $b 乘法 *
$a / $b 除法 /
$a % $b 取模 %
$a ** $b 幂运算 **

除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。

取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。

取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。

(2)字符串运算符

1. 拼接 "."

字符串运算符只有一个,即英文的句号“.”。它将两个或多个字符串连接起来,结合到一起形成一个新的字符串。PHP中的“+”号只做赋值运算符使用,而不能做字符串运算符。

2. “.”连接和“+”连接结果的区分

  • 使用“.”时,变量$m和$n两个字符串组成一个新的字符串
  • 使用“+”时,PHP会认为这是一次算术运算

“+”号的两边有字符类型,则自动转换为整型。字符串的开始部分决定了它的值。

  • 字符串以合法的数值开始,则会截取字符串头部的数字部分
  • 字符串不是以合法的数值开始,其值为 0(零)

(3)逻辑运算符

1. 与

运算符 说明
&& $a和$b都为true,结果为true,否则为false
and 与&&相同,但优先级较低

2. 或

运算符 说明
|| $a和$b中至少有一个为true,则结果为true,否则为false
or 与||相同,但优先级较低

3. 非

运算符 说明
! 若$a为false,结果为true,否则相反

4. 异或

运算符 说明
xor $a和$b的值一个为true,一个为false时,结果为true,否则为false

(4)比较运算符

运算符 说明
== 相等
!= 不等
=== 恒等
只有当两个变量的值和数据类型相同时,结果才为TRUE
!== 非恒等

(5)优先级

PHP 笔记——基础的更多相关文章

  1. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  2. 小猪猪C++笔记基础篇(五)表达式、语句

    小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...

  3. 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

    小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...

  4. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  5. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  6. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

    注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...

  7. 《python基础教程(第二版)》学习笔记 基础部分(第1章)

    <python基础教程(第二版)>学习笔记 基础部分(第1章)python常用的IDE:Windows: IDLE(gui), Eclipse+PyDev; Python(command ...

  8. flex笔记 - 基础

    flex笔记 - 基础 文章中的所有图示代码都放在了github上: 阮一峰flex博客跟学代码 传统的布局解决方案,基于盒模型, 依赖 display, position, float属性来进行布局 ...

  9. PowerShell 笔记 - 基础篇

    Powershell 笔记 基础 查看powershell版本 PS C:\Users\chino> $PSVersionTable Name Value ---- ----- PSVersio ...

  10. 《Java笔记——基础语法》

    Java笔记--基础语法       一.字符串的拼接: 例如: System.out.println(""+"");     二.换行语句: 例如: Syst ...

随机推荐

  1. select多选框

    select多选框 效果: 代码: <HTML> <HEAD> <TITLE>选择下拉菜单</TITLE> <meta http-equiv=&q ...

  2. 使用inline-block,使前面img,后面空div居中显示在一行后,导致当div中有内容时,div下移问题

    .pro_li img,.pro_sm{display: inline-block; *display:inline;*zoom:1;vertical-align: middle ;} 解决方法:使用 ...

  3. python笔记之BytesIO

    1. 什么是BytesIO BytesIO与StringIO类似,不同的是StringIO只能存放string,BytesIO是用来存放bytes的,它提供了在内存中读写字节的能力. 即在内存中读写字 ...

  4. python操作上级子文件

    . └── folder ├── data │ └── data.txt └── test1 └── test2 └── test.py import os '***获取当前目录***'print o ...

  5. http状态码说明

    在学习网页设计的时候都应该知道状态码,但我们常见的状态码都是200,404,下面介绍其他的状态值 1开头的http状态码表示临时响应并需要请求者继续执行操作的状态代码. 100   (继续) 请求者应 ...

  6. .NET 处理视频-MediaInfo 获取视频信息

    获取视频信息的组件很多,本节介绍的是:MediaFile. 第一步.添加 MediaInfoDotNet 在项目上右键,选择“管理 NuGet 程序包”,浏览以选中 MediaInfoDotNet,然 ...

  7. 014 JVM面试题

    转自:http://www.importnew.com/31126.html 本文从 JVM 结构入手,介绍了 Java 内存管理.对象创建.常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲 ...

  8. Deploy Openstack with RDO and Change VNC console to Spice

    Deploy Openstack with RDO and Change VNC console to Spice host os: centOS 7 server config network an ...

  9. python 面试

    知识总结 面试(一)

  10. Mybatis的关联映射案例

    主要是对之前学习的关联映射做一个案例,自己动手实践一下,可以理解的更好一点. 开发环境 开发工具:idea Java环境: jdk1.8.0_121 数据库:SQLServer 项目结构,里面包含了三 ...