零基础学习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函数
<?phpecho "<h1>这是一个标题!</h1>";echo "Hello world!";echo "test1","test2","test3";$a = 1;echo $a;
?>#print函数
<?phpprint "<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
\ddd 1-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。

<?phpecho 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 + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的积 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 模(除法的余数) x 除以 y 的余数 5 % 2 10 % 8 10 % 2 1 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 = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y 模(除法的余数)
a .= b a = a . b 连接两个字符串

递增/递减运算符说明

运算符 名称 描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
– x 预递减 x 减 1,然后返回 x
x – 后递减 返回 x,然后 x 减 1

比较运算符说明

运算符 名称 描述 实例
x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false
x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true 5===“5” 返回 false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
x !== y 不绝对等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!==“5” 返回 true
x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false
x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true

逻辑运算符说明

运算符 名称 描述 实例
x and y 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 and y > 1) 返回 true
x or y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x6 or y5) 返回 true
x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true x=6 y=3 (x6 xor y3) 返回 false
x && y 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 && y > 1) 返回 true
x || y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x5 || y5) 返回 false
! x 如果 x 不为 true,则返回 true x=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 之间的所有数字,当数字为偶数时跳过当前循环,实现代码如下:

<?phpfor ($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 用于成功中止程序。

示例:

<?phpecho '测试!测试!<br>';exit('退出程序,不再向下执行!');echo '这是一条测试信息!';
?><?phpfor ($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),如有侵权请联系删除。

零基础学习PHP-PHP基础相关推荐

  1. Java零基础学习Java编程语言基础知…

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.下面就说说Java零基础学习Java编程语言基础知识的几个要点.希望能够对Java编程基础入门学习的新手有帮助 ...

  2. 医用计算机基础学习心得,计算机基础学习心得.doc

    计算机基础学习心得 计算机基础学习心得一:计算机基础学习心得 当今社会,到处充满机会与挑战.知识是我们面对这一切的筹码,而计算机知识则更为重要.如何在本科函授这样一种形式下,学好计算机课程,这是摆在我 ...

  3. C基础学习笔记——01-C基础第02天(用户权限、VI操作、Linux服务器搭建)

    在学习C基础总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 01-C基础第02天(用户权限.VI操作.Linux服务器搭建) 打开终端:ctrl+alt+t ...

  4. C的回归基础学习1——真的基础

    C的回归基础学习1--真的基础 前言 自从高二noip(2017)惨败后便没有在认真的碰C++了,以至于荒废至此.本身打算在国庆复习,但是奈何的编写网页的任务太爆肝了,假期结束还得补作业.直到现在才开 ...

  5. 大数据技术之_23_Python核心基础学习_01_计算机基础知识 + Python 入门 (9.5小时)

    大数据技术之_23_Python核心基础学习_01 第一章 计算机基础知识 1.1 课程介绍 1.2 计算机是什么 1.3 计算机的组成 1.4 计算机的使用方式 1.5 windows 的命令行 1 ...

  6. 零基础学习Python:基础阶段

    1. Python的安装和简介 1.1 Python基础常识 1.1.1 简介 Python是一门面向对象的解释性计算机设计语言 1.1.2 Python语言特色 python是一门解释性语言 解释性 ...

  7. python自学看不懂怎么办_零基础学习python但是基础教程一看到后面就开始看不懂了,怎么办?...

    廖大的教程看不懂不要担心,简明教程也看不下去也不要怕,世界上总有人基础比你好的,不过我们可以用笨办法来学习python. 0,先找一个python3版本的<笨办法学python>,从头看, ...

  8. linux输入ls后不显示_零基础学习之Linux基础命令小结

    安装完重启后,没有像sery所说在图形界面崩溃了,由于我没有安装X-WINDOWS而是直接进入了文本界面.如果你想做linux管理的话,最好在文本界面下工作,这样会适应如下图: 第一行显示的是我们所安 ...

  9. 【Java基础学习】Java基础中容易忽略点-2

    - 多线程 高可用.高性能.高并发 - 概念 方法间的调用:普通方法的调用,从哪来到哪里去,闭合的一条路径 多线程使用:开辟多条路径 程序.进程和线程 程序指的是静态的代码:进程指的是操作系统调用程序 ...

  10. 大数据技术之_23_Python核心基础学习_01_计算机基础知识 + Python 入门 (9.5小时)...

    第一章 计算机基础知识1.1 课程介绍1.2 计算机是什么1.3 计算机的组成1.4 计算机的使用方式1.5 windows 的命令行1.6 环境变量(environment variable)1.7 ...

最新文章

  1. 处理 JSON null 和空数组及对象
  2. vmare安装ghostwin7
  3. 翻译:如何用Cocos2d来开发简单的IPhone游戏教程
  4. [专题目录]-CA/TA development导读目录
  5. Parcel(打包)
  6. JQ focus blur focusin focuseout
  7. Docker笔记2 容器及其基本操作
  8. 12 岁赚钱买电脑,19 岁创立公司,戴尔传奇
  9. flume将数据发送到kafka、hdfs、hive、http、netcat等模式的使用总结
  10. 中国科学院大学计算机研究生拟录取名单,2019中国科学院大学硕士考研研究生拟录取名单全部(2)...
  11. 你知道Java里有多少种锁吗?15种锁最全总结!
  12. xshell用ssh连接VMware中的ubuntu
  13. button执行onclick函数_可能你的react函数组件从来没有优化过
  14. 【SpringBoot_ANNOTATIONS】自动装配 03 方法 构造器位置的自动装配
  15. Github - 第一篇:Github安装与配置
  16. 600个超实用ICON图标矢量
  17. 使用maven打jar包
  18. 自己动手写打印机监控程序
  19. vue面试题自我介绍
  20. C / C++从键盘输入字符串,并求其长度

热门文章

  1. 研究生参与项目经验谈
  2. 创建第一个Flutter App项目
  3. 实验三、最长公共子序列(输出所有最长公共子序列)
  4. Codesys + BeagleBone PLC控制达到小儿科水平之Modbus RTU通讯
  5. 第十二篇:欧赔与亚盘对比赛的分歧
  6. jQuery EasyUI 应用 - 创建展开行明细编辑表单的 CRUD 应用
  7. Elasticsearch查询使用
  8. 年轻人必备的生活APP,每一个都超好用
  9. 【C++】注册热键-RegisterHotKey
  10. Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本