数据库大作业要先学php,没办法来和我一起速成?♀️叭~
一、语法概述
- 变量以 $ 符号开始,后面跟着变量的名称。
- 和python 一样不用声明变量,直接创建。这是因为php和python都是弱类型语言,像C++之类的强类型语言在使用变量前必须先声明变量的类型和名称。
- PHP有四种变量作用域:local、global、static、parameter。
- 若要在函数内部访问一个全局变量,必须使用global关键字。
- 当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在第一次声明变量时使用 static 关键字。
二、echo/print语句
- echo、print是PHP的两种基本输出方式
- echo——可以输出一个或多个字符串,无返回值
print——只允许输出一个字符串,返回值总是1 - echo/print 都不用加括号,且里面可加标签
三、EOF(heredoc)
- PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。
- 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接。
四、数据类型
- 大概这么几种:String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
- var_dump() 函数可以返回数据类型和值。
- 用class声明对象:
<?php
/**
* Created by PhpStorm.
* User: freya
* Date: 2018-11-26
* Time: 15:53
*/
class Car //建立一个汽车类
{
var $color; //声明汽车颜色属性
function __construct($color="green") //汽车类的构造函数(new时调用),默认参数值为绿色
{
$this->color = $color; //将汽车的颜色属性值设为传入的颜色
}
function what_color() //获取汽车颜色的方法
{
return $this->color; //返回汽车的颜色属性值
}
}
function print_vars($obj) //输出传入对象中所有属性和对应属性值的方法
{
foreach (get_object_vars($obj) as $prop => $var) //获取对象的所有属性成一个数组,并遍历他们,最后以 "属性=>值" 的形式输出
{
echo "\t $prop = $var \n";//将"\t属性名 = 属性值\n"输出到网页(\t是文本缩进,\n是文本换行,它们都是空白符,html在解析时表现为一个空格)
}
}
//实例一个对象
$herbie = new Car(); //实例化汽车类得到汽车对象。
//显示herbie属性
echo "\t herbie : Properties \n"; //输出到网页
print_vars($herbie); //调用输出对象中所有属性及对应值的方法,传入汽车对象
?>
- 常量采用define定义,定义后默认是全局变量,函数内不用声明也可使用。
五、字符串
- 在 PHP 中,只有一个字符串运算符:并置运算符 (.) ,用于把两个字符串值连接起来。
- strlen() 函数返回字符串的长度(字符数)。
- strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
六、运算符
- 算数运算符:+、-、*、/、%、- (取反)、. (并值)。
-
赋值运算符:=、+=、-=、*=、/=、%=、.=
-
递增/递减运算符:
-
比较运算符(特殊的有):
===:绝对等于,即x等于y且其类型相同
在数组比较时表示恒等:即 x 和 y 具有相同的键/值对,且顺序相同类型相同
<>:和 != 一样表示不等于
- 逻辑运算符:and/&& (与) 、or/ || (或)、xor (异或)、!(非)
- 三元运算符:
php7+还可以写成:(expr1)??(expr3)
七、if else / switch
- 在 PHP 中,提供了下列条件语句:
if 语句 - 在条件成立时执行代码
if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
if…elseif…else 语句 - 在若干条件之一成立时执行一个代码块
switch 语句 - 在若干条件之一成立时执行一个代码块
八、数组
- 在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
- 创建数组用 array() 函数:
//法一:自动分配ID
$cars=array("Volvo","BMW","Toyota");
//法二:手工分配ID
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
- 获取数组的长度 - count() 函数
- 关联数组 :
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// or
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
遍历关联数组用 - foreach() 函数
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43
九、数组排序
PHP 数组排序函数:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
注:PHP输出之 echo/print/print_r区别:
echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出 echo 会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。
print 是打印字符串
print_r 则是打印复合类型 ,如数组对象
十、超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
$GLOBALS:一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
$_SERVER:一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
$_REQUEST:用于收集HTML表单提交的数据。
$_POST:广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”。
G
E
T
:
同
样
被
广
泛
应
用
于
收
集
表
单
数
据
,
在
H
T
M
L
f
o
r
m
标
签
的
指
定
该
属
性
:
"
m
e
t
h
o
d
=
"
g
e
t
"
。
_GET: 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
GET:同样被广泛应用于收集表单数据,在HTMLform标签的指定该属性:"method="get"。_GET 也可以收集URL中发送的数据。
$_FILES
$_ENV
$_COOKIE
$_SESSION
十一、循环
在 PHP 中,提供了下列循环语句:
while - 只要指定的条件成立,则循环执行代码块
do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
for - 循环执行代码块指定的次数
foreach - 根据数组中每个元素来循环代码块
十二、函数
创建函数
<?php
function functionName()
{
// 要执行的代码
}
?>
十三、魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。这些特殊的常量不区分大小写。
- LINE:文件中的当前行号。
- FILE:文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
- DIR:文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
- FUNCTION:返回该函数被定义时的名字(区分大小写)。
- CLASS:返回该类被定义时的名字(区分大小写)。
- METHOD:返回该方法被定义时的名字(区分大小写)。
- NAMESPACE:当前命名空间的名称(区分大小写)。
命名空间和面向对象暂时感觉用不到,用到了再来补叭~