点我

后端基础【PHP速通】

概述

PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。

它最初由Rasmus Lerdorf于1994年创建,旨在简化网页开发过程。PHP可以嵌入到HTML中,并与多种数据库集成,最常用的是MySQL。其灵活性、易学性和强大的社区支持使得PHP成为开发动态网页和Web应用程序的首选语言之一。

PHP代码在服务器上执行,生成的HTML发送到客户端,从而实现网页的动态交互。它广泛应用于各种Web开发项目,包括内容管理系统、电子商务平台和社交媒体网站。

PHP 是什么?

  • PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
  • PHP 脚本在服务器上执行。
  • PHP 可免费下载使用。

PHP 文件是什么?

  • PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
  • PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
  • PHP 文件的默认文件扩展名是 ".php"

PHP 能做什么?

  • PHP 可以生成动态页面内容
  • PHP 可以创建、打开、读取、写入、关闭服务器上的文件
  • PHP 可以收集表单数据
  • PHP 可以发送和接收 cookies
  • PHP 可以添加、删除、修改您的数据库中的数据
  • PHP 可以限制用户访问您的网站上的一些页面
  • PHP 可以加密数据

为什么使用 PHP?

  • PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
  • PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
  • PHP 提供了广泛的数据库支持
  • PHP 易于学习,并可高效地运行在服务器端

PHP语法

PHP 脚本可以放在文档中的任何位置。

PHP 脚本以 结束:

PHP 文件的默认文件扩展名是 ".php"。

PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。

<!DOCTYPE html>
<html>
<body>

<h1>My first PHP page</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

通过 PHP,有两种在浏览器输出文本的基础指令:echoprint

PHP 注释

  • // 单行注释
  • /* */ 多行注释
<!DOCTYPE html>
<html>
<body>

<?php
// 这是 PHP 单行注释

/*
这是
PHP 多行
注释
*/
?>

</body>
</html>

变量

变量是用于存储信息的"容器"

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

PHP 变量规则

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 \_ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

创建PHP变量

PHP 没有声明变量的命令。

变量在您第一次赋值给它的时候被创建

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

在上面的语句执行中,变量 txt 将保存值 **Hello world!**,且变量 x 将保存值 5

注释: 当您赋一个文本值给变量时,请在文本值两侧加上引号。

PHP 是一门弱类型语言

PHP 会根据变量的值,自动把变量转换为正确的数据类型。

在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

echo 和 print 语句

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

提示: echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。

显示字符串

<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
?>

显示变量

<?php
$txt1="学习 PHP";
$txt2="xbxaq.com";
$cars=array("Volvo","BMW","Toyota");
 
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>

print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。

显示字符串

<?php
print "<h2>PHP 很有趣!</h2>";
print "Hello world!<br>";
print "我要学习 PHP!";
?>

显示变量

<?php
$txt1="学习 PHP";
$txt2="xbxaq.COM";
$cars=array("Volvo","BMW","Toyota");
 
print $txt1;
print "<br>";
print "在 $txt2 学习 PHP ";
print "<br>";
print "我车的品牌是 {$cars[0]}";
?>

数据类型

PHP 变量存储不同的类型的数据,不同的数据类型可以做不一样的事情。

PHP 支持以下几种数据类型:

  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • (空值)
  • Resource(资源类型)

字符串

一个字符串是一串字符的序列,就像 "Hello world!"。

你可以将任何文本放在单引号和双引号中

<?php 
$x = "Hello world!";
echo $x;
echo "<br>"; 
$x = 'Hello world!';
echo $x;
?>

整型

整数是一个没有小数的数字。

整数规则:

  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数
  • 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

PHP var\_dump()函数用于输出一个或多个表达式的类型和值,它通常用于调试目的,因为它可以快速显示变量的详细信息。

<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

浮点型

浮点数是带小数部分的数字,或是指数形式

<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>

布尔型

布尔型可以是 TRUE 或 FALSE

布尔型通常用于条件判断

数组

数组可以在一个变量中存储多个值

<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>

对象

对象数据类型也可以用于存储数据。

在 PHP 中,对象必须声明。

首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

然后我们在类中定义数据类型,然后在实例化的类中使用数据类型

<?php
class Car
{
  var $color;
  function __construct($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>

值表示变量没有值。 是数据类型为 的值。

值指明一个变量是否为空值。 同样可用于数据空值和 值的区别。

可以通过设置变量值为 来清空变量数据

<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

类型比较

虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

例如,"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。

<?php
if(42 == "42") {
    echo '1、值相等';
}
 
echo PHP_EOL; // 换行符
 
if(42 === "42") {
    echo '2、类型相等';
} else {
    echo '3、类型不相等';
}
?>

PHP中 比较 0、false、

<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo "<hr />";
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo "<hr />";
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo "<hr />";
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo "<hr />";
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo "<hr />";
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo "<hr />";
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);

常量

常量值被定义后,在脚本的其他任何地方都不能被改变

常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

注意: 常量在整个脚本中都可以使用。

设置常量,使用 define() 函数,函数语法如下

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

该函数有三个参数:

  • name: 必选参数,常量名称,即标志符。
  • value: 必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

创建一个 区分大小写的常量, 常量值为 "欢迎访问 xbxaq.com"

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 xbxaq.com");
echo GREETING;    // 输出 
echo '<br>';
echo greeting;   // 输出 "greeting",但是有警告信息,表示该常量未定义
?>

运算符

PHP 中,赋值运算符 = 用于给变量赋值。

在 PHP 中,算术运算符 + 用于把值加在一起。

算术运算符

<?php 
$x=10; 
$y=6;
echo ($x + $y); // 输出16
echo '<br>';  // 换行
 
echo ($x - $y); // 输出4
echo '<br>';  // 换行
 
echo ($x * $y); // 输出60
echo '<br>';  // 换行
 
echo ($x / $y); // 输出1.6666666666667
echo '<br>';  // 换行
 
echo ($x % $y); // 输出4
echo '<br>';  // 换行
 
echo -$x;
?>

赋值运算符

<?php 
$x=10; 
echo $x; // 输出10
echo "<hr />";
$y=20; 
$y += 100;
echo $y; // 输出120
echo "<hr />";
$z=50;
$z -= 25;
echo $z; // 输出25
echo "<hr />";
$i=5;
$i *= 6;
echo $i; // 输出30
echo "<hr />";
$j=10;
$j /= 5;
echo $j; // 输出2
echo "<hr />";
$k=15;
$k %= 4;
echo $k; // 输出3
?>

递增/递减运算符

<?php
$x=10; 
echo ++$x; // 输出11
echo "<hr />";
$y=10; 
echo $y++; // 输出10
echo "<hr />";
$z=5;
echo --$z; // 输出4
echo "<hr />";
$i=5;
echo $i--; // 输出5
?>

比较运算符

<?php
$x=100; 
$y="100";
 
var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x !== $y);
echo "<br>";
 
$a=50;
$b=90;
 
var_dump($a > $b);
echo "<br>";
var_dump($a < $b);
?>

三元运算符

语法格式

(expr1) ? (expr2) : (expr3) 

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

条件语句

您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。

在 PHP 中,提供了下列条件语句:

  • if 语句 - 在条件成立时执行代码
  • if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
  • switch 语句 - 在若干条件之一成立时执行一个代码块

if 语句用于仅当指定条件成立时执行代码

语法

if (条件)
{
    条件成立时要执行的代码;
}

<?php
$t=date("H");
if ($t<"20")
{
    echo "Have a good day!";
}
?>

if...else 语句

在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if....else 语句。

语法

if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

<?php
$t=date("H");
if ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
?>

if...elseif....else 语句

在若干条件之一成立时执行一个代码块,请使用 if....elseif...else 语句。.

语法

if (条件)
{
    if 条件成立时执行的代码;
}
elseif (条件)
{
    elseif 条件成立时执行的代码;
}
else
{
    条件不成立时执行的代码;
}

<?php
$t=date("H");
if ($t<"10")
{
    echo "Have a good morning!";
}
elseif ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
?>

Switch 语句

switch 语句用于根据多个不同条件执行不同动作。

如果您希望有选择地执行若干代码块之一,请使用 switch 语句。

<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
    echo "你喜欢的颜色是红色!";
    break;
case "blue":
    echo "你喜欢的颜色是蓝色!";
    break;
case "green":
    echo "你喜欢的颜色是绿色!";
    break;
default:
    echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>

数组

数组能够在单个变量中存储多个值

数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

创建数组

在 PHP 中,array() 函数用于创建数组:

array();

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

数值数组

这里有两种创建数值数组的方法:

自动分配 ID 键(ID 键总是从 0 开始):

$cars=array("Volvo","BMW","Toyota");

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

获取数组的长度 - count() 函数

count() 函数用于返回数组的长度(元素的数量)

<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>

遍历数值数组

遍历并打印数值数组中的所有值,您可以使用 for 循环

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

关联数组

关联数组是使用您分配给数组的指定的键的数组。

这里有两种创建关联数组的方法

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

or

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

遍历关联数组

遍历并打印关联数组中的所有值,您可以使用 foreach 循环

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

循环

循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。

在 PHP 中,提供了下列循环语句:

  • while - 只要指定的条件成立,则循环执行代码块
  • do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
  • for - 循环执行代码块指定的次数
  • foreach - 根据数组中每个元素来循环代码块

while循环

while 循环将重复执行代码块,直到指定的条件不成立。

语法

while (条件)
{
    要执行的代码;
}

实例首先设置变量 i 的值为 1 ($i\=1;)。

然后,只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1:

<html>
<body>

<?php
$i=1;
while($i<=5)
{
    echo "The number is " . $i . "<br>";
    $i++;
}
?>

</body>
</html>

do...while 语句

do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

语法

do
{
    要执行的代码;
}
while (条件);

实例首先设置变量 i 的值为 1 ($i\=1;)。

然后,开始 do...while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行

<html>
<body>

<?php
$i=1;
do
{
    $i++;
    echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>

</body>
</html>

For 循环

for 循环用于您预先知道脚本需要运行的次数的情况。

语法

for (初始值; 条件; 增量)
{
    要执行的代码;
}

参数:

  • 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
  • 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
  • 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。

注释: 上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。

实例

下面的实例定义一个初始值为 i\=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1

<?php
for ($i=1; $i<=5; $i++)
{
    echo "数字为 " . $i;
}
?>

foreach 循环

foreach 循环用于遍历数组。

语法

foreach ($array as $value)
{
    要执行代码;
}

每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

foreach ($array as $key => $value)
{
    要执行代码;
}

每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。

<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
    echo $value;
    echo "<br>";
}
?>

<?php
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
foreach ($x as $key => $value)
{
    echo "key  为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>

函数

创建 PHP 函数

函数是通过调用函数来执行的。

<?php
function functionName()
{
    // 要执行的代码
}
?>

函数准则:

  • 函数的名称应该提示出它的功能
  • 函数名称以字母或下划线开头(不能以数字开头)
<?php
function writeName()
{
    echo "Kai Jim Refsnes";
}
 
echo "My name is ";
writeName();
?>

函数 - 添加参数

为了给函数添加更多的功能,我们可以添加参数,参数类似变量。

参数就在函数名称后面的一个括号内指定。

<?php
function writeName($fname)
{
    echo $fname . " Refsnes.<br>";
}
 
echo "My name is ";
writeName("Kai Jim");
echo "My sister's name is ";
writeName("Hege");
echo "My brother's name is ";
writeName("Stale");
?>

<?php
function writeName($fname,$punctuation)
{
    echo $fname . " Refsnes" . $punctuation . "<br>";
}
 
echo "My name is ";
writeName("Kai Jim",".");
echo "My sister's name is ";
writeName("Hege","!");
echo "My brother's name is ";
writeName("Ståle","?");
?>

函数 - 返回值

如需让函数返回一个值,请使用 return 语句

<?php
function add($x,$y)
{
    $total=$x+$y;
    return $total;
}
 
echo "1 + 16 = " . add(1,16);
?>

超局变量

超全局变量是在全部作用域中始终可用的内置变量。在函数或方法中无需执行global $variable;就可以访问它们。
这些超全局变量如下:

  • $GLOBALS:包含了全部变量的全局组合数组。变量的名字就是数组的键。
  • $\_SERVER:包含了诸如头信息(header)、 路径(path), 以及脚本位置(script locations)等信息的数组。这个数组中的项目由Web服务器创建。
  • $\_GET:通过URL参数传递给当前脚本的变量的数组。
  • $\_POST:当HTTP POST请求的Content-Type是application/x-www-form-urlencoded或multipart/form-data时,会将变量以关联数组形式传入当前脚本。
  • $\_REQUEST:默认情况下包含了$\_GET、$\_POST和$\_COOKIE的数组。
  • $\_COOKIE:通过HTTP Cookies方式传递给当前脚本的变量的数组。
  • $\_SESSION:当前脚本可用SESSION变量的数组。
  • $\_FILES:通过HTTP POST方式上传到当前脚本的项目的数组。
  • $\_ENV:通过环境方式传递给当前脚本的变量的数组。

魔术常量

魔术常量是PHP向它运行的任何脚本提供的大量的预定义常量。魔术常量其实不是常量,可以理解为特殊的常量,以下介绍的5个魔术常量随位置而改变。

  • \_\_LINE\_\_:表示文件中的当前行号,不区分大小写;
  • \_\_FILE\_\_:表示文件完整的路径和命名,不区分大小写;
  • \_\_FUNCTION\_\_:表示函数名称,区分大小写;
  • \_\_CLASS\_\_:表示类的名称,区分大小写;
  • \_\_METHOD\_\_:表示类的方法的名称,区分大小写;
  • ......

魔术方法

魔术方法都是以两个下划线开头

  • \_\_construct():构造方法,当一个对象实例化时自动调用;
  • \_\_destruct():析构方法,当对象被销毁之前系统自动调用。用于释放对象所占用的额外的资源,而不是对象本身。有三种销毁对象的方法,具体如下:
    (1)脚本执行完毕之后,自动销毁
    (2)改变对象变量的值,自动销毁
    (3)使用 unset函数销毁对象
  • \_\_clone():克隆一个对象时自动调用;
  • \_\_autoload ():使用尚未被定义的类时自动调用;
  • \_\_sleep():串行化的时候调用;
  • \_\_wakeup():反串行化的时候调用;
  • \_\_tostring():把一个对象转换成字符串来用时自动调用该方法;
  • \_\_invoke():把对象当一个方法来用时就会自动调用该方法;
  • \_\_set():为不可访问的属性设值时就会自动调用该方法;
  • \_\_get():获得不可访问的属性的值;
  • \_\_unset():删除不可访问的属性;
  • \_\_isset():判断不可访问的属性是否存在;
  • \_\_call():当调用一个不可访问的对象方法时自动调用该方法;
  • \_\_callstatic():调用一个不可访问的类方法;
分类: WEB安全

评论

-- 评论已关闭 --

目录