零基础学习PHP-PHP基础

零基础学习PHP-PHP基础

第一章:PHP编程基础

1.1PHP简介

​ PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。

​ PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

​ PHP 是嵌入在 HTML 中的服务器端脚本语言。它用来管理动态内容、数据库、会话跟踪,甚至建立整个电子商务网站。

1.2PHP部署安装环境

​ PHP的运行环境可以使用集成环境包搭建,推荐用PHPstudy,选择它的原因也很简单更新快、版本新、操作简单容易上手。

官方网站下载:http://www.phpstudy.net/

请添加图片描述

1.3PHP代码工具

推荐:PHPstorm

百度网盘链接:https://pan.baidu.com/s/1c1zJ86NkyQaWRMpFxYjNUQ?pwd=binl
提取码:binl

请添加图片描述

第二章PHP基础语法介绍

1、PHP基本语法规则

PHP标签
1. 标准写法: <?php ...?>
2. 短标签形式(SGML 形式)标签 <?...?>
3. 编译 PHP 时,选择 --enable-short-tags 配置选项
4. 或在 php.ini 文件设置 short_open_tag 为 on。PHP 配置文件中必须禁用此选项防止解析
   XML,因为相同的语法适用于 XML 标记。
5. HTML 脚本标签 <script language="PHP">...</script>
   注意:php7以上 该写法已被弃用
分隔符

php代码应以 ; 作为结束标志

<?php
echo "123";
echo "123";
?>
PHP注释符

单行注释

<?php
phpinfo(); //这是一条注释
#这是一条注释
>?>

多行注释

<?php
/*phpinfo方法是PHP的将配置文件php.ini展示在前端,
同时也叫php的探针*/
phpinfo();
?>
php变量

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

<?php $a=123;?>

php变量规则:

  • 变量$符号开始,后面跟着变量的名称
  • 变量必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字和下划线(a-Z、0-9和_)
  • 变量名不能包含空格
  • 变量名区分大小写

创建PHP变量

<?php
$test="hello world";//字符串需要使用""或''包裹
$a=1;//a是数字
>
PHP输出方法
  • echo:可以输出一个或多个字符串(字符串可以是HTML标签)
  • print_r:只允许输出一个字符串,返回值总为1(字符串可以是HTML标签)
  • var_dump:此函数显示关于一个或多个表达式的结构信息,包含表达式的类型与值
#echo函数
<?php
    echo "<h1>这是一个标题!</h1>"echo "Hello world!";
	echo "test1","test2","test3";
	$a = 1;
	echo $a;
?>

#print函数
<?php
   	print "<h1>这是一个标题!</h1>"print "Hello world!";
	$a = 1;
	print $a;
?>

#var_dump()
<?php
	$a = array(1,2,3);
	var_dump($a);
?>
   
PHP转义字符说明

\是php的转义字符

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS),将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF),将当前位置移到下一行开头010
\r回车(CR),将当前位置移到本行开头013
\t水平制表(HT),跳到下一个TAB位置009
\v垂直制表(VT)011
\代表一个反斜线字符092
代表一个单引号(撇号)字符039
"代表一个双引号书号034
?代表一个问号063
\0空字符(NUL)000
\ddd1-3为八进制所代表的任意字符三位八进制
\xhh十六进制所代表的任意字符十六进制
<?php
$a = "123456";
echo "\$a";//$被转义了,所以输出结果的'$a',而不是变量12345
?>
PHP换行符说明
\n的作用是给源代码换行
PHP_EOL = \n
如果是输出给浏览器就用<br/>
如果是输出到自己的文件里,就用“\n”,windows下是”\r\n“
PHP数据类型说明

String(字符串),Integer(整体),Float(浮点型),Boolean(布尔型),Array(数组),Object(对象),NULL(空值)

字符串(string)

一个字符是一串字符的序列,就像”Hello World!“,文本用单引号或双引号包裹

整型(int)

整数是一个没有小数的数字(integer)

整数规则:

  • 整数必须至少含有一个数字
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以用四种格式来指定:十进制,十六进制(以0x为前缀)或八进制(前缀为0),二进制(前缀为0b,PHP版本大于5.4)
<?php
    $a = 1234;
	var_dump($a);
	$a = -123;	//负数
	var_dump($a);
	$a = 0x8c;//十六进制数
	var_dump($a);
	$a = 012;//八进制数
	var_dump($a);
	$a = 0b11;//二进制数,显示是10进制
	var_dump($a);
?>
浮点数(float)

浮点数是带小数点的数字,或是指数形式(float)、(double)、(real)

# 以下 e 是指数 1e2 = 1*10^2 = 100
<?php
	$x = 10.365;
	var_dump($x);
	echo "<br>";
	$x = 2.4e3;
	var_dump($x);
	echo "<br>";
	$x = 8E-5;
	var_dump($x);
?>
布尔型(bool)

布尔型可以是True或False、(bool)、(boolean)

<?php
$a = true;
$b = false;
var_dump($a);
echo "<br/>";
var_dump($b);

$x = "";
$y = is_bool($b);
var_dump($y);       // bool(true)

var_dump((bool) "");//bool(false)
var_dump((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
var_dump((boolean)"");
?>
数组(array)

以维数组:是由数字字符组成的以单纯的排序结构排列的结构单一的数组

<?php
$ary1 = array("one","two","three");
echo  "1:".$ary1[0]."2:".$ary1[1]."3:".$ary1[2];
echo "<br/>";

//自定义键名
$ary2 = array("name1"=>"testname1","name2"=>"testname2","name3"=>"testname3");
echo "数组键名为name2的内容为:{$ary2["name2"]}";
echo "<br/>";

//简便写法
$arr3 = ["name"=>"tom","age"=>"18"];
?>
二维数组/多维数组

多维数组是包含一个或多个数组的数组

<?php
$arr=[[1,2,3,4,5,6],[a,b,c,d,e],"test"]
?>
对象(object)

在PHP中,对象必须声明,不许使用class关键字声明变量,类是可以包含属性和方法的结构,然后我们在类里面定义数据类型,然后再实例化的类中使用数据类型

<?php
class car
{
    var $color ="green";
    function what_color(){
        return $this->color;
    }
    function my_name($name){
        echo "my name is $name";
    }
}

$obj = new car();
echo $obj->color;
echo "<br/>";
echo $obj->what_color();
echo "<br/>";
echo $obj->my_name("tom");
echo "<br/>";
?>
NULL值

NULL值表示变量没有值,NULL是数据类型为NULL的值,NULL和0是不相等的。

<?php
$x = null;
$y = null;
$z = 0;
var_dump($x);
var_dump($x===$y);//输出bool(true)
var_dump($x===$z);//输出bool(false)
?>
PHP类型比较

PHP是弱语言类型,变量之间进行比较包含松散比较和严格比较。

  • 松散比较:使用两个等号==比较,只比较值,不比较类型。
  • 严格比较:用三个等号===比较,除了比较值,也比较类型
<?php
if(42=="42"){
	echo "1、值相等";
}
echo PHP_EOL;
if(42 === "42"){
    echo "2、类型相等";
}else{
    echo "3、类型不相等"}
?>
PHP类型转换
1、自动转换

​ 在PHP中,自动类型转换通常发生在不同类型的变量混合运算时,若参与运算的变量类型不同,则需要先将他们转换成同一类型,然后再进行运算。

​ 通常只有四种变量类型(intrger、float、string、boolean)和NULL才会在运算的变量类型不同,则需要先将他们转换成同一类型,然后再进行运算。注意,自动类型转换并不会改变变量本身的类型,改变的仅是这些变量的求值方式。

<?php
$str = "100abc";
$str +=5;
echo '此时 $str 的类型为:'.gettype($str).', 值为:'.$str."\n";
$str += 3.14;
echo '此时 $str 的类型为:'.gettype($str).', 值为:'.$str."\n"; # double双精度浮点数
$str = null ;
echo '此时 $str 的类型为:'.gettype($str).', 值为:'.$str."\n";
?>
2、强制转换

2.1使用再变量之前加上用括号括起来的目标类型的方式强制转换变量类型时,括号中允许使用的变量类型如下所示:

  • (int),(integer):转换从整型
  • (bool),(boolean):转换成布尔类型
  • (float),(double),(real):转换成浮点类型
  • (string):转换成字符串类型
  • (array):转换成数组类型
  • (object):转换成对象类型

2.2使用具体的转换函数intval(),floatval(),boolval(),strval()等来转换变量的类型时,这些函数的作用如下所示:

  • intval():用于获取变量的整数值
  • floatval():用于获取变量浮点值
  • boolval():用于获取变量的布尔值
  • strbval():用于获取变量的字符串值
<?php
$str = "123.123abc";
$int = intval($str);
echo $int."<br/>";//输出123
echo '变量$int的类型为:'.gettype($int)."<br/>";  //输出integer

$float = floatval($str);
echo $float."<br/>";//输出123.123
echo '变量$float的类型为:'.gettype($float)."<br/>";  //输出double

$string = strval($str);
echo $string."<br/>";//输出123.123abc
echo '变量$string的类型为:'.gettype($string)."<br/>";//输出string
?>

2.3上面介绍的两种强制类型转换的方式都不会改变被转换变量本身的类型,而是通过将转换得到新类型的数据赋值给新的变量,原变量的类型和值不变。如果需要改变变量本身的类型可以使用settype()函数来完成,函数的语法格式如下:

settype(mixed &$var,string $type)

其中, v a r 为要转换的变量, var为要转换的变量, var为要转换的变量,type为要转换的类型,可以是boolean(bool),integer(int),float(double),string,array,object,null

<?php
$str = (string)"123.123abc";
$bool = (bool)true;
settype($str,"insteger");
settype($bool,"string");
echo '$str 的类型为:'.gettype($str).'<br> $bool 的类型为:'.gettype($bool);
?>
PHP常量说明

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

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

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

define声明常量

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

bool define ( string $name, mixed $value)

该函数有三个参数:

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。

常量的值。在 PHP 5 中, value 必须是 scalar 值(int、 float、string、boolean 或null )。在 PHP 7 中, array 值也被允许

<?php
define("name","tom");
echo name;//输出”tom“
echo "<br>";

function myname(){
    echo "my name is ".name;
}
myname();
?>
const声明常量

在类里面定义常量用const关键字,而不是用define()函数。

class Test {
    const x = 123;
}
$test = new Test();
echo $test::x;
?>

2、PHP字符串相关操作说明

单引号和双引号
  • PHP中双引号包裹的字符串可以写变量,单引号不行
  • PHP中字符串可以用 . 连接,相当于两个字符串相连。
<?php
$a = "PHP";
echo "$a 是最好的语言!";//输出"PHP 是最好的语言!"
echo "<br>";
echo $a."是最好的语言!";//输出"PHP是最好的语言!"
?>
并置运算符

在PHP中,只有一个字符串运算符 (.),并置运算符(.)用于把两个字符串值连接起来。

<?php
	$test1 = "Hello";
	$test2 = "World!";
	echo $test1." ".$test2;//输出 Hello World!
?>
strlen()

strlen()函数返回字符串的长度(字节数)

<?php
echo strlen("Hello World!");
?>
strpos()

strpos()函数用于在字符串内查找一个字符或一段制定的文本。

如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果没有找到,则返回false。

<?php
	echo strpos("Hello World!","World");	//输出为6,注意字符串中第一个字符的位置是0
?>
substr()

substr()函数返回字符串的一部分。

<?php
#substr(string,start,length)
#输入一个字符串,从某个位置开始,截取某个长度,默认截取搭配尾部
$test = "Hello World!";
echo substr($test,6,5);     //输出   World
?>
chunk_split()

chunk_split()函数把字符串分割为一连串更小的部分

<?php
#chunk_split(string,length,end)
#string:输入一个字符串,length:每一段的长度,end:以什么分割,默认以空格分割
$test = "test1test2test3test4";
echo chunk_split($test,5,"<br/>");     //输出test1<br/>test2<br/>test3<br/>test4
?>
explode()

explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组

explode(separator,string,limit)

3、运算符说明

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

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

算术运算符说明
运算符名称描述实例结果
x + yx 和 y 的和2 + 24
x - yx 和 y 的差5 - 23
x * yx 和 y 的积5 * 210
x / yx 和 y 的商15 / 53
x % y模(除法的余数)x 除以 y 的余数5 % 2 10 % 8 10 % 21 2 0
-x设置负数取 x 的相反符号<?php $x = 2; echo -$x; ?>-2
~x取反x 取反,按二进制位进行"取反"运算。运算规则:~1=-2; ~0=-1;<?php $x = 2; echo ~$x; ?>-3
a . b并置连接两个字符串“Hi” . “Ha”HiHa
赋值运算符说明

在 PHP 中,基本的赋值运算符是 =。它意味着左操作数被设置为右侧表达式的值。也就是说,$x = 5 的值是 5。

运算符等同于描述
x = yx = y左操作数被设置为右侧表达式的值
x += yx = x + y
x -= yx = x - y
x *= yx = x * y
x /= yx = x / y
x %= yx = x % y模(除法的余数)
a .= ba = a . b连接两个字符串
递增/递减运算符说明
运算符名称描述
++ x预递增x 加 1,然后返回 x
x ++后递增返回 x,然后 x 加 1
– x预递减x 减 1,然后返回 x
x –后递减返回 x,然后 x 减 1
比较运算符说明
运算符名称描述实例
x == y等于如果 x 等于 y,则返回 true5==8 返回 false
x === y绝对等于如果 x 等于 y,且它们类型相同,则返回 true5===“5” 返回 false
x != y不等于如果 x 不等于 y,则返回 true5!=8 返回 true
x <> y不等于如果 x 不等于 y,则返回 true5<>8 返回 true
x !== y不绝对等于如果 x 不等于 y,或它们类型不相同,则返回 true5!==“5” 返回 true
x > y大于如果 x 大于 y,则返回 true5>8 返回 false
x < y小于如果 x 小于 y,则返回 true5<8 返回 true
x >= y大于等于如果 x 大于或者等于 y,则返回 true5>=8 返回 false
x <= y小于等于如果 x 小于或者等于 y,则返回 true5<=8 返回 true
逻辑运算符说明
运算符名称描述实例
x and y如果 x 和 y 都为 true,则返回 truex=6 y=3 (x < 10 and y > 1) 返回 true
x or y如果 x 和 y 至少有一个为 true,则返回 truex=6 y=3 (x6 or y5) 返回 true
x xor y异或如果 x 和 y 有且仅有一个为 true,则返回 truex=6 y=3 (x6 xor y3) 返回 false
x && y如果 x 和 y 都为 true,则返回 truex=6 y=3 (x < 10 && y > 1) 返回 true
x || y如果 x 和 y 至少有一个为 true,则返回 truex=6 y=3 (x5 || y5) 返回 false
! x如果 x 不为 true,则返回 truex=6 y=3 !(x==y) 返回 true
数组运算符说明
运算符名称描述
x + y集合x 和 y 的集合
x == y相等如果 x 和 y 具有相同的键/值对,则返回 true
x === y恒等如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
x != y不相等如果 x 不等于 y,则返回 true
x <> y不相等如果 x 不等于 y,则返回 true
x !== y不恒等如果 x 不等于 y,则返回 true
三目运算符说明
(条件表达式) ? (结果1) : (结果2) ; # 如果条件成立返回结果1,否则返回结果2

4、流程控制语法说明

PHP条件语句说明

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

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

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

条件语句用于根据不同条件执行不同的动作

if语句

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

语法

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

示例

<?php
$a = 1;
$b = 2;
if ($a<$b)
{
    echo '变量$a小于$b';
}
?>
#输出变量$a小于$b
if…else语句

在条件成立时执行一个代码块,条件不成立时执行另一个代码块,使用is…else语句。

语法

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

示例

<?php
$a = 1;
$b = 2;
if ($a>$b)
{
    echo '变量$a小于$b';
}
else
{
    echo '变量$b大于$a';
}
?>
#输出 变量$b大于$a
if…elseif…else语句

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

语法

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

示例

<?php
$a = 1;
$b = 2;
if ($a = $b)
{
    echo '$a等于$b';
}
elseif ($a > $b)
{
    echo '$a大于$b';
}
else
{
    echo '$a小于$b';
}
#输出 $a小于$b
?>
Switch语句说明

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

有选择的执行若干个代码之一,使用Switch语句。

语法

<?php
switch (n)
{
    case labe1:
        如果n=labe1,此处代码执行;
        break;
    case labe2:
        如果n=labe2,此处代码执行;
        break;
    default:
        如果n既不等于labe1也不等于labe2,此处代码将执行;
}
?>

**工作原理:**首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。

示例:

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

在 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>

输出:

The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
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>

输出:

The number is 2
The number is 3
The number is 4
The number is 5
The number is 6
for循环

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

语法:

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

参数:

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

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

示例:

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

输出:

数字为 1
数字为 2
数字为 3
数字为 4
数字为 5
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 . PHP_EOL;
}
?>

输出:

Google
Runoob
Taobao

下面的实例演示了一个输出给定数组键与值的循环:

示例:

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

输出:

key  为 1,对应的 value 为 Google
key  为 2,对应的 value 为 Runoob
key  为 3,对应的 value 为 Taobao
PHP 循环关键字说明
break关键字

break 关键字可以使程序跳出当前的循环,可以在 switch、for、while 和 do while等语句中使用,这样可以终止循环体的代码并立即跳出当前的循环,执行循环之后的代码。

使用 while 声明一个无限循环,在循环中不断生成 1~20 之内的随机数,当随机数等于 10 时,使用break 退出循环,实现代码如下:

<?php
while (true) {
		$num = rand(1, 20);
		echo $num.', ';
		if ($num == 10) {
			echo '$num = 10,退出循环!<br>';
		break;
		}
}
echo '成功退出 while 循环!';
?>

break 语句不仅可以跳出当前的循环,还可以指定跳出几层循环。语法格式为:

break n;

其中,参数 n 指定要跳出的循环层数,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JyU0Ge3C-1686815315834)(img/break%E5%85%B3%E9%94%AE%E5%AD%97)]

【示例】使用 3 层循环,最外层的 while 循环和中间层的 for 循环都为无限循环,最里面并列两个 for循环:程序首先执行第一个 for 循环,当变量 $i 等于 3 时,跳出当前循环(第一层循环),继续执行第二个 for 循环,当第二个 for 循环中的变量制等于 4 时,将直接跳出最外层循环。实现代码如下:

<?php
while (true) {
	for (;;) {
		for ($i=0; $i < 10; $i++) {
			echo '$i = '.$i.', <br>';
			if($i == 3) {
				echo '变量 $i 等于 3,跳出第一层循环。<br>';
				break 1;
			}
		}
		for ($j=0; $j < 10; $j++) {
			echo '$j = '.$j.', <br>';
			if($j == 4) {
				echo '变量 $j 等于 4,跳出最外层循环。';
				break 3;
			}
		}
}
echo '由于前面直接跳出了最外层循环,所以这里的打印信息是看不到的!';
}
?>
continue 关键字

continue 是用在循环结构中的,它可以控制程序放弃本次循环中 continue 语句之后的代码并进行下一次循环。continue 本身并不跳出循环结构,只是放弃这一次循环。如果在非循环结构中(例如 if或switch语句中)使用 continue,程序将会出错。

【示例】使用 for 循环输出 1~10 之间的所有数字,当数字为偶数时跳过当前循环,实现代码如下:

<?php
	for ($i = 1; $i <= 10; $i++) {
		if($i % 2 == 0) {
			continue;
		}
		echo '$i = '.$i.', <br>';
	}
?>

与 break 关键字相同,continue 也可以接受一个可选的数字参数来决定跳过几重循环的循环末尾,默认
值是 1,即跳到当前循环的末尾。语法格式如下:

continue n;
<?php
	$arr = array('A','B','C','D','E','F','G','H','I','J');
	for ($i=0; $i < 10; $i++) {
		echo '<br>';
		if($i % 2 == 0){
			continue;
		}
		for (;;) {
			for ($j=0; $j < count($arr); $j++) {
				if($j == $i){
					continue 3; # 注意:continue跳过的是循环的层数,不是次数
				}else{
					echo '$arr['.$j.'] = '.$arr[$j].' | ';
				}
			}
		}
		echo "由于前面跳出了循环,所以这句换无法打印出来!";
	}
?>
die()和exit()函数

在 PHP 中,die() 和 exit() 函数的用法和作用是一样的,都可以输出一个消息并且退出当前程序。

其实 exit 和 die 这两个名字指向的是同一个函数,die() 是 exit() 函数的别名。该函数只接受一个参数,可以是一个具体的数值,也可以是一个字符串,还可以不输入任何参数,另外 die() 和 exit() 这两个函数是没有返回值的。

die() 和 exit() 函数的语法格式如下:

exit(message);
die(message);

其中,message 为一个可选参数(可以为空),可以是字符串类型也可以是 int 类型。如果 message为字符串类型,则函数会打印该字符串并退出当前脚本;如果 message 为 int 类型,那么该值会作为退出状态码,并且不会被打印输出。 退出状态码的取值范围在 0 至 254 之间,注意:不要使用被 PHP 保留的退出状态码 255。 状态码 0 用于成功中止程序。

示例:

<?php
	echo '测试!测试!<br>';
	exit('退出程序,不再向下执行!');
	echo '这是一条测试信息!';
?>

<?php
	for ($i=0; $i < 10; $i++) {
		if ($i == 2) {
			die;
		} else {
			echo '$i = '.$i.'<br>';
		}
	}
	echo '测试!测试!<br>';
	echo '这是一条测试信息!';
?>

5.PHP 函数说明

function PHP 函数

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

PHP 函数准则:

  • 函数的名称应该提示出它的功能
  • 函数名称以字母或下划线开头(不能以数字开头)
<?php
function functionName()
{
	// 要执行的代码
}
?>
<?php
function writeName()
{
	echo "tom";
}
echo "My name is ";
writeName();
?>
args-添加参数

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

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

#形参,创建函数时定义的参数
#实参,调用函数时传递的参数
<?php
#形参 $name $age
function info($name, $age)
{
	echo "name is $name, age is $age.";
}
#实参 'tom' 18
info('tom', 18);
?>
不确定参数

func_num_args()获取实参的个数

func_get_args()获取实参的信息,是一个数组

示例:写一个函数,计算任意个参数的和

<?php
function sim (){
    
}
return - 返回值

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

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

6.PHP 变量作用域说明

变量的作用域是脚本中变量可被引用/使用的部分。

PHP 有四种不同的变量作用域:

  • global 函数之外声明的变量拥有global作用域,只能在函数以外进行访问

  • local 函数内部声明的变量拥有LOCAL作用域,只能 在函数内部进行访问

  • static 当一个函数完成时,它的所有变量通常都会被删除,static属性修饰的变量可以保留

  • parameter 参数是通过调用代码将值传递给函数的局部变量

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问

<?php
$x=5; // 全局变量
function myTest()
{
	$y=10; // 局部变量
	echo "<p>测试函数内变量:<p>";
	echo "变量 x 为: $x";
	echo "<br>";
	echo "变量 y 为: $y";
}
myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>
PHP global 关键字

global 关键字用于函数内访问全局变量。

在函数内调用函数外定义的全局变量,我们需要在函数中的量前加上 global 关键字

<?php
$x=5;
$y=10;

function mytest()
{
    global $x,$y;
    $y= $x+$y;
}
mytest();
echo $y;	//输出15
?>

PHP将所有变量存储再一个名为$GLOBALS[index]的数组中,index保存变量的名称。这个数组可以在函数内部使用,也可以直接用来更新全局变量。

上面的示例还可以写成下面这样:

<?php
$x=5;
$y=10;
function myTest()
{
	$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y;
?>
Static作用域

当一个函数完成时,它的所有变量通常都会被删除,当不希望某个局部变量被删除,在第一次声明变量时使用static关键字

<?php
function mytest()
{
    static $x=0;
    echo $x;
    $x++;
    echo PHP_EOL;	//换行符
}
mytest();
mytest();
mytest();
?>
参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分

<?php
function mutest($x)
{
    echo $x;
}
mytest(5);
?>

7.数组相关函数说明

获取数组长度count()
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>
插入元素
array_push(array,value1,value2...) # 末尾插入
array_unshift(array,value1,value2,value3...) # 开头插入
删除元素
array_pop(array) # 删除末尾元素
array_shift() # 删除开头元素
unset() # 删除变量
array_values(array) # 刷新键名
反转数组
array_reverse()
搜索元素值

array_search()函数在数组中搜索某个键值,并返回对应的键名

# array_search(value,array,strict)
#value:必需。规定在数组中搜索的值。
#array:必需。被搜索的数组。
#strict:可选。指代搜索的严格性,可能的值为true或false (默认)。如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的。如果设置为false ,则不保持严格性;函数在数组中搜索数据类型和值都一致的元素。
<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);
?>
切割数组array_chunk()
#array_chunk($ array,$ size,$ preserve_keys)
#$array:此参数表示需要分成多个块的数组。
#$size:此参数是整数,用于定义要创建的块的大小。
#$preserve_keys:此参数为布尔值。当此参数设置为TRUE时,将保留键,否则将从0开始重新索引块。
#返回值:该函数返回一个从0开始索引的多维数组。每个块包含$size个元素,最后一个块除外,后者可能包含较少数量的元素。
<?php
$test= array(1,2,3,4,5,6,7,8,9);
print_r(array_chunk($test,2));
?>
数组排序
冒泡排序

在开始冒泡排序之前先找出数组中最大的元素

<?php
//冒泡排序方法
function bubblesort(&$arr){
    //在PHP中&符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。
    //定义一个变量保存交换的值
    $temp = 0;
    for($i=0;$i<count($arr);$i++){
        for($j=0;$j<count($arr)-$i-1;$j++){
            if($arr[$j]>$arr[$j+1]){
               //如果前面的那个数大于后面的那个数,那么他们就进行交换
            	$temp=$arr[$j];
           	 	$arr[$j]=$arr[$j+1];
           		 $arr[$j+1]=$temp; 
            }
        }
    }
}
$arr=array(100,90,150,3,7,1,200);
bubblesort($arr);
print_r($arr);
?>
内置数组排序函数

数组中的元素可以按字母或数字顺序进行降序或升序排列

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列
# sort() - 对数组进行升序排列
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
var_dump($cars);
?>
# rsort() - 对数组进行降序排列
<?php
$cars=array("Volvo","BMW","Toyota");
rsort($cars);
var_dump($cars);
?>
# asort() - 根据数组的值,对数组进行升序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
var_dump($age);
?>
# ksort() - 根据数组的键,对数组进行升序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
ksort($age);
?>
# arsort() - 根据数组的值,对数组进行降序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
?>
# krsort() - 根据数组的键,对数组进行降序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age);
?>

8.PHP 超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。

PHP 超级全局变量列表:

  • $GLOBALS
  • $SERVER
  • _$_REQUEST
  • $POST
  • _$_GET
  • $FILES
  • _$_ENV
  • $COOKIE
  • _$_SESSION
$GLOBALS

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。

$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
# z 是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问
echo $z;
?>
$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目

<?php
# 当前执行脚本的文件名
echo $_SERVER['PHP_SELF'];
echo "<br>";
# 当前运行脚本所在的服务器的主机名
echo $_SERVER['SERVER_NAME'];
echo "<br>";
# 当前请求头中 Host: 项的内容
echo $_SERVER['HTTP_HOST'];
echo "<br>";
# 当前请求头中 user-agent: 项的内容
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
# 包含当前脚本的路径
echo $_SERVER['SCRIPT_NAME'];
?>
$_REQUEST

PHP $_REQUEST 用于收集HTML表单提交的数据。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit"按钮提交表单数据时, 表单数据将发送至标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>
$_POST

PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit"按钮提交表单数据时, 表单数据将发送至标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
$_GET

PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“get”

$_GET 同样可以直接通过url传递参数

<html>
<body>
<a href="./1.php?subject=PHP&web=security">Test $GET</a>
</body>
<?php
echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
?>
</html>
获取请求头信息
# getallheaders() 函数能够获取全部的HTTP请求头信息
<?php
foreach (getallheaders() as $name => $value) {
echo "$name: $value <br/>";
}
?>
设置响应头信息
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("X-Powered-By: php");
?>
隐藏响应头信息
隐藏apache版本信息

在httpd.conf文件中 增加 ServerTokens “Prod”

隐藏PHP版本信息

将php.ini中的expose_php = On,改为Off,响应头信息 X-Powered-By 将隐藏

9.PHP 魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

魔术变量描述
_LINE_表示文件中的当前行号
_FILE_表示文件的完整路径和文件民名
_DIR_表示文件所在的目录
_FUNCTION_表示函数名称(区分大小写)
_CLASS_表示类被定义时的名字
_TRAIT_表示Trait的名字
_METHOD_表示类的方法名(区分大小写)
_NAMESPACE_表示表示当前命名空间的名称(区分大小写)
<?php
echo '这是第 " ' . __LINE__ . ' " 行';
echo '该文件位于 " ' . __FILE__ . ' " ';
echo '该文件位于 " ' . __DIR__ . ' " ';
function test() {
echo '函数名为:' . __FUNCTION__ ;
}
test();
?>

name;
?>

```
$_GET

PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“get”

$_GET 同样可以直接通过url传递参数

<html>
<body>
<a href="./1.php?subject=PHP&web=security">Test $GET</a>
</body>
<?php
echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
?>
</html>
获取请求头信息
# getallheaders() 函数能够获取全部的HTTP请求头信息
<?php
foreach (getallheaders() as $name => $value) {
echo "$name: $value <br/>";
}
?>
设置响应头信息
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("X-Powered-By: php");
?>
隐藏响应头信息
隐藏apache版本信息

在httpd.conf文件中 增加 ServerTokens “Prod”

隐藏PHP版本信息

将php.ini中的expose_php = On,改为Off,响应头信息 X-Powered-By 将隐藏

9.PHP 魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

魔术变量描述
_LINE_表示文件中的当前行号
_FILE_表示文件的完整路径和文件民名
_DIR_表示文件所在的目录
_FUNCTION_表示函数名称(区分大小写)
_CLASS_表示类被定义时的名字
_TRAIT_表示Trait的名字
_METHOD_表示类的方法名(区分大小写)
_NAMESPACE_表示表示当前命名空间的名称(区分大小写)
<?php
echo '这是第 " ' . __LINE__ . ' " 行';
echo '该文件位于 " ' . __FILE__ . ' " ';
echo '该文件位于 " ' . __DIR__ . ' " ';
function test() {
echo '函数名为:' . __FUNCTION__ ;
}
test();
?>

参考内容:
参考菜鸟PHP(https://www.runoob.com/php/php-tutorial.html),如有侵权请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值