PHP基础详解(全)
文章目录
PHP格式
<?php // PHP 的开始标记,表示从此标记开始,进入PHP模式
#内容
?> //PHP的结束标记,表示从开始标记到结束标记,之间的内容是PHP模式
说明:
在
PHP
文件中,可以与HTML和JavaScript混编。
开始标记<?php
表示进入PHP
模式,结束标记?>
,
标识退出PHP
模式。
PHP
模式之外的内容会被作为字符输出到浏览器中。
HTML或JavaScript对于PHP
来说就是纯文本字符串。
PHP函数介绍
<?php
phpinfo(); // PHP 代码
?>
解释:
1.
phpinfo
是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP
信息。2、电脑是一个很笨的东西,需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此只要写完一段代码,就需要在后面加分号。
3、而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,看着不舒服。其实中间有多少个回车空行都没有关系的,保证好看就行了。
PHP
的语法解释器(PHP
最核心部分)不会处理这些空行的。
安全问题:如果是一个在线的网站能够看到
phpinfo
页面,说明存在敏感信息泄露漏洞,这个漏洞需要体现在后面的渗透测试报告中。
PHP基础语法
PHP变量
<?php
$iphone7 = 5880; #分号(;)代表一句PHP代码的结束
$iphone7plus = 6088;
echo $iphone6 + $iphone7plus; //echo是在PHP里面最常用的一个输出、显示功能的命令
?>
$叫作美元符,英文单词:dollar。
PHP
的变量必须以美元符开始。说明搞PHP
有”钱”途。
变量的几个特点介绍:
1、必须要以 开始,如变量 ‘ x ‘ 必须要写成 ‘ 开 始 ,如变量`x`必须要写成` 开始,如变量‘x‘必须要写成‘x
2、变量名由字母、数字、下划线组成,并且首字母不能以数字开头,也不能包含空白字符、特殊字符等其他字符。 3、变量的名字区分大小写 4、变量不要用特殊符号、中文,_不算特殊符号 5、变量命名要有意义(别写
xxx,
aaa,
ccc`)这种变量名
变量命名时,建议使用驼峰命令法或者下划线命名法,做到变量名的“见名知意”
$firstName;
$LastName;
$first_name;
$last_name;
PHP 中有⼀些标识符是系统定义的,也称为关键字,是PHP 语⾔的组成部分,因此不 建议使⽤它们中的任何⼀个作为变量名,包括函数名,类名等。
$echo; //不建议使用
变量声明与初始化
直接赋值,直接使用。
echo $username; // Notice: Undefined variable: username,表示没有给这个变量赋值
$username = "XIU";
echo $username;
变量释放
unset()函数释放指定的变量。
$username = "XIU";
echo $username;
unset($username);
echo $username; //Notice: Undefined variable: username
可变变量($$)
可变变量,一个变量的名字可以动态的设置和使用。$$是php
的特性,也是产生php
中变量覆盖漏洞的原因之一。
<?php
// 服务器读取的 编码设置
header('Content-type:text/html;charset=utf-8');
//定义了一个变量叫作$shu 将$shu这个变量的值设为字符串的biao
$shu = ‘biao’;
//定义了一个变量叫作$biao 将他的值设置为鼠标
$biao = ‘鼠标’;
//$$shu就是可变变量;在已声明的变量$shu前又加上了一个变量符,表示$biao,而$biao为‘鼠标’,所以输出鼠标
echo $$shu;
?>
变量类型
变量类型是指保存在该变量中的数据的数据类型,在计算机编程语⾔世界中每个数据 都有它的类型。 具有相同类型的数据才能被彼此相互操作。 在强类型的语⾔中例如C 语⾔,变量要通过声明指定类型,然后才可以存储对应指定 的数据,就好⽐现实⽣活中在制作⼀个柜⼦之前,就要决定好这个柜⼦的类型,是书 柜那么以后就只能⽤来存书,是⾐柜以后就只能⽤来存⾐服。
但是PHP
是⼀种弱类型的语⾔,和其他语⾔不同的是,变量或者常量的数据类型由程序的上下⽂决定,不需要事先声明类型。⼀个柜⼦,要是往⾥⾯存书籍那么他就是书柜;要是往⾥⾯存放⾐服,那么它就是⾐柜,根本不需要事先说明这个是书柜还是⾐柜,⼀切根据实际需要使⽤即可。 可以将数据的变量类型输出,使⽤的函数var_dump()。
<?php
$name="XIU"; //string类型
$sex=true; //bool类型
$age=24; //int类型
$score=59.9; //float类型
var_dump($name); //输出数据的变量类型
?>
bool类型
布尔类型是最简单的类型,布尔型表达了true 或false,即真或假。
//bool.php
$a = true;
$b = false;
var_dump($b); //输出变量的数据类型
进行if 判断的时候,如果表达式不是
bool
类型的值,会有类型转换,其他类型的值转 换成布尔类型的值。⼤多数的值是被认为是true,少部分以下值被认为是false。bool(false) int(0) float(0) string(0)"" string(1)"0" array(0){} NULL
int 整型
$age=24; #整型,存储整数
var_dump($age);
float 浮点型
$score=99.9; #浮点型,也称double,只包含小数的数
var_dump($score);
string 字符串
字符串是有序的一系列字符。字符串可以使用单引号、双引号、定界符三种方法来定义。
单引号定义字符串:''
单引号定义的字符串中不能包含单引号,如果包含,需要转义
\'
单引号中的变量不会被识别。
//string.php
$name='XIU';
$msg='Welcome';
echo $msg.$name; # . 运算符,在php中代表字符串拼接
双引号定义字符串:
双引号中可以包含单引号,双引号中包含双引号,需要转义1”
PHP会解析双引号之间的变量,最好用[将变量名括起来。// string.php $username = "XIU"; $message = "Welcome, {$username}"; echo $message;
PHP常量
常量表示不可改变的量。
定义和使用
常量的命名与变量类似,也遵循PHP
标识符的名称规则,按照惯例常量标识符总是大写的。
<?php
define("USERNAME","XIU");
//USERNAME='XIU';
//unset("USERNAME");
echo USERNAME;
?>
变量⼀般由$ 符号起头,常量⼀般⼤写。
预定义常量
PHP
已经定义好了,可以直接使用的常量,一般代表特殊的含义。魔术常量是预定义常量中比较特殊的一类。
常量名 | 常量值 |
---|---|
FILE | 当前的文件名,完整的路径 |
LINE | 当前行号 |
FUNCTION | 当前的函数名 |
CLASS | 当前的类名 |
METHOD | 当前对象的方法名 |
PHP_OS | 操作系统类型 |
PHP_VERSION | 当前PHP的版本 |
DIRECTORY_SEPARATOR | 目录的分隔符 |
PHP换行
<?php
echo "<br \>"; #换行
?>
PHP算术运算符
例子 | 名称 | 结果 |
---|---|---|
a a% ab | 取模,取余 | a 除以 a 除以 a除以b 的余数 |
$a++ | 后加 | 返回 a ,然后将 a,然后将 a,然后将a 的值加一 |
$a– | 后减 | 返回 a ,然后将 a,然后将 a,然后将a 的值减一 |
<meta charset = "utf-8">
<h1>算术运算符</h1>
<?php
$a = 10;
$b = 3;
// echo -$a;
// echo $a + $b;
// echo $a - $b;
// echo $a * $b;
// echo $a / $b;
// echo $a % $b;
// echo ++ $a;
// echo $a ++;
// echo -- $a;
echo $a--;
字符串运算符
字符串运算符完成的主要⼯作,就是字符串拼接。
在JS
语⾔中,字符串拼接⽤+,运算符. 的作⽤是访问对象中的属性或者⽅法。
PHP
中,使⽤.
进⾏字符串拼接。PHP
中.
也叫连接运算符。
<meta charset = "utf-8">
<h1>字符串连接符</h1>
<?php
$name = "XIU";
$str = "Hello,".$name;
//$str = "Hello,"+$name;
var_dump($str);
?>
赋值运算符
左边的操作数必须是变量,右边可以是一个表达式,也可以是一个值,一个变量等等。
作用:将右边表达式的值赋给左边变量。
⼆元赋值运算符 |
---|
= |
+= |
-= |
*= |
/= |
%= |
.= |
<meta charset = "utf-8">
<h1>赋值运算符</h1>
<?php
$a = 10;
$b = 3;
// $a += $b;
// $a -= $b;
// $a *= $b;
// $a /= $b;
// $a %= $b;
$a .= $b;
echo $a;
比较运算符
对操作数(按照比较运算符的要求,规则)进行比较后,得到返回值(boolean)。
如果比较出的结果满足比较运算符的要求那么结果就是tue(真,成立,满足),否则就是false(假,不成立,不满足)。
例子 | 说明 | 备注 |
---|---|---|
$a == $b | 等于 | |
$a === $b | 全等 | 值相等并且数据类型相同 |
$a != $b | 不等 | |
$a <> $b | 不等 | |
$a !== $b | 不全等 | |
$a < $b | ⼩于 | |
$a > $b | 大于 | |
$a <= $b | 小于等于 | |
a > = a>= a>=b | 大于等于 |
<meta charset = "utf-8">
<h1>比较运算符</h1>
<?php
$a = 5;
$b = 3;
$c = $a == $b;
$c = $a === $b;
$c = $a != $b;
$c = $a <> $b;
$c = $a !== $b;
$c = $a > $b;
$c = $a >= $b;
$c = $a < $b;
$c = $a <= $b;
var_dump($c);
?>
PHP
中规定:使用echo输出布尔类型值的时候echo true
;它在页面中会输出1。echo false
它会在页面中什么都不输出。建议使用var_dump0
来输出更明了的结果。
逻辑运算符
逻辑运算符 | 例⼦ | 解释 | 运算符法则 |
---|---|---|---|
and && | $a and $b $a && $b | 逻辑"与"运算 | |
or || | $a or $b $a || $b | 逻辑"或"运算 | |
xor | $a xor $b | 逻辑"异或"运算 | 相同为假,不同为真。 |
! | !$a | 逻辑"⾮"运算 |
<meta charset = "utf-8">
<h1>逻辑运算符</h1>
<?php
$a = true;
$b = false;
//var_dump($a);
//var_dump($b);
$c = ($a and $b);
$c = ($a && $b);
$c = ($a or $b);
$c = ($a || $b);
$c = ($a xor $b);
$c = !$a;
var_dump($c);
?>
反引号
⾃动适配系统命令,调⽤系统命令。
// ``.php
$cmd = "whoami";
$cmd = "ipconfig";
$cmd = "net user";
echo "<pre>".`$cmd`;
@
屏蔽表达式可能发⽣的错误。
echo @$username;
php流程控制
了解PHP
流程控制过程
掌握if,while,for等流程控制语句的用法。
顺序执行
⾃上⽽下的执⾏即可,这也是PHP 语句的默认执⾏过程。对这个执⾏过程没有控制。
echo "This is first echo";
echo "<br />";
echo "This is second echo";
echo "<br />";
echo "This is third echo";
分支执行
分⽀执⾏可以根据表达式的值是否为True 来选择执⾏某些代码,PHP
的分⽀执⾏主 要通过if 和switch 来实现。
if语句
语言结构
f(){//判断条件,如果判断条件的返回值为True,则执行语句块1,否则执行语句块2
//语句块1
}else{
//语句块2
}
单向条件
// if.php
$score = 59.9;
if($score >= 60 ){
echo "congratulations";
}
双向条件
// if.php
$score = 99.9;
if($score >= 60 ){
echo "congratulations";
}else{
echo "Sorry, you may need help!";
}
switch 语句
功能与f语句类似,当需要多向分支结构时,并且判断条件是具体的某个值,此时大多使用switch结构。
<?php
$day = 7;
switch($day){
case 1:
echo "Monday";
break;
case 2 :
echo "Tuesday";
break;
case 3 :
echo "Wednesday";
break;
case 4 :
echo "Thursday";
break;
case 5:
echo "Friday";
break;
case 6:
echo "Saturday!";
break;
case 7:
echo "Sunday!";
break;
default:
echo "Error!";
}
?>
注意:
表达式的值最好是整形或者字符串。
不要忘记break语句,用来跳出switch语句。每个case语句后面都加上break。
如果某个case语句后面并没有接语句块,那么就说明这个语句块的内容是同下。
case后面的语句块是不需要
{}
括起来的。
判断条件
在编写if 语句时,要求判断条件是⼀个布尔类型的值。但是实际应⽤中,是⽆法保障 这⼀点。如果判断条件是⾮布尔类型的值,就需要强制转换成布尔类型的值。如下:
// if.php
$flag = 0;
$flag = 0.0;
$flag = "";
$flag = "0";
$flag = array();
$flag = NULL;
$flag = "XIU";
$flag = true;
$flag = 24;
$flag = 59.9;
if($flag){
echo var_dump($flag)." means Ture";
}else{
echo var_dump($flag)." means False";
}
循环执行
计算机最擅⻓的功能之⼀就是按照规定的条件,重复执⾏某些操作,这是程序设计中 最能发挥计算机特⻓的程序结构。
while
语言结构
while(表达式){//当表达式的值为真的时候,执行循环体。
//循环体
}
当表达式的值为true,就执行下面的循环体。当循环体执行结束之后,继续判断表达
式的值是true还是false,如果还是true,那么就继续执行循环体。直到,这个表达式
的值为false,那么这个while语句就执行结束了。
例子:输出1到100数字。
// while.php
$a = 1;
while ($a <= 100) {
echo $a."<br />";
$a ++;
}
do while
// do-while.php
$a = 1;
do{
echo $a."<br />";
$a ++;
}while ($a <= 10);
for
语法格式
for(;;){//计数器;判断条件;自增或自减
//循环体
}
例子:输出1到1000数字
// for.php
for ($i=0; $i < 1000 ; $i++) {
echo $i."<br />";
}
break
break ⽤于switch,for,while,do…while,foreach 等的中断。后⾯可以接上⼀个 数字来表⽰跳出⼏层循环。默认不加就是跳出当前循环语句。
/ break.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
break;
}
echo $i."<br />";
}
echo "PHP is DONE!";
continue
continue 只能⽤在循环语句,轮空本次循环,并不是结束整个循环语句。
// continue.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
continue;
}
echo $i."<br />";
}
echo "PHP is DONE!";
exit
exit 表⽰结束当前整个PHP
脚本的执⾏。同die() 语句。
// exit.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
// exit;
// exit("PHP is OVER");
// die("PHP is OVER");
die();
}
echo $i."<br />";
}
echo "PHP is DONE!";
#### break
break ⽤于switch,for,while,do...while,foreach 等的中断。后⾯可以接上⼀个 数字来表⽰跳出⼏层循环。默认不加就是跳出当前循环语句。
```php
/ break.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
break;
}
echo $i."<br />";
}
echo "PHP is DONE!";
continue
continue 只能⽤在循环语句,轮空本次循环,并不是结束整个循环语句。
// continue.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
continue;
}
echo $i."<br />";
}
echo "PHP is DONE!";
exit
exit 表⽰结束当前整个PHP
脚本的执⾏。同die() 语句。
// exit.php
for ($i=1; $i <= 100; $i++) {
if ($i % 17 == 0) {
// exit;
// exit("PHP is OVER");
// die("PHP is OVER");
die();
}
echo $i."<br />";
}
echo "PHP is DONE!";