PHP基础入门
PHP语法初步
PHP是一种运行在服务器端的脚本语言,可以镶嵌到HTML当中
PHP代码标记
asp标记:<%php代码%>
短标记:<?PHP代码?>
以上两种基本弃用,须在ini中启用
脚本标记 : <script language="php">php代码</script>
标准标记:<?php php代码?>
php变量
变量是用来储存信息的"容器"
变量可以是很短的名称(如x,y)或者更具描述性的名称(如age,carname)
变量命名规则
变量以$符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包括字母,数字以及下划线(A-z,0-9和_)
变量名不能包含空格
变量名是区分大小写的
PHP语句和PHP变量都是区分大小写的
创建(声明)PHP变量
PHP没有声明变量的命令
变量在第一次赋值给他时被创建
PHP会根据变量的值,自动把变量转换为正确的数据类型
PHP变量作用域
变量的作用域是脚本中变量可被引用/使用的部分
PHP有四种不同的变量作用域
local
global
static
parameter
局部和全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中任何部分访问,要在一个函数中访问一个全局变量,需要使用global关键字
在PHP函数内部声明的变量是局部变量,仅能在函数内部访问:
global
global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,需要在函数中的变量前加上 global 关键字
Static
当一个函数完成时,它的所有变量通常都会被删除若使某个局部变量不要被删除。在第一次声明变量时使用 static 关键字
参数作用域
参数是通过调用代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分
PHP输出
echo与print的区别
echo可以输出一个或多个字符
print只允许输出一个字符串,返回值总唯一
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()
print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()
EOF# PHP EOF(heredoc) 使用说明
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
必须后接分号,否则编译通不过。
EOF可以用任意其它字符代替,只需保证结束标识与开始标识一致。
结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
echo
输出一个或者多个字符串。
和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。
print_r
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。
var_dump
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
var_dump 和 print_r 的区别
var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。
php数据类型比较
数据类型
PHP 变量存储不同的类型的数据,不同的数据类型可以做不一样的事情。
PHP 支持以下几种数据类型:
String(字符串)
Integer(整型)
Float(浮点型)
Boolean(布尔型)
Array(数组)
Object(对象)
NULL(空值)
Resource(资源类型)
PHP 字符串
一个字符串是一串字符的序列
PHP 整型
整数是一个没有小数的数字。
整数规则:
整数必须至少有一个数字 (0-9)
整数不能包含逗号或空格
整数是没有小数点的
整数可以是正数或负数
整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
PHP 浮点型
浮点数是带小数部分的数字,或是指数形式。
PHP 布尔型
布尔型可以是 TRUE 或 FALSE。
布尔型通常用于类型判断
PHP 数组
数组可以在一个变量中存储多个值。
PHP 对象
对象数据类型也可以用于存储数据。
在 PHP 中,对象必须声明。
必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
PHP NULL 值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
PHP 资源类型
PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。
常见资源数据类型有打开文件、数据库连接、图形画布区域等。
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
使用 get_resource_type() 函数可以返回资源(resource)类型
PHP 类型比较
松散比较:使用两个等号 == 比较,只比较值,不比较类型。
严格比较:用三个等号 === 比较,除了比较值,也比较类型。
PHP常量
常量值被定义后,在脚本的其他任何地方都不能被改变
一个常量由英文字母,下划线,和数字组成,但数字不能作为首字母出现。(常量名不需要加$修饰符).
常量在整个脚本中都可以使用
设置常量,使用define()函数,函数语法如下
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
**name:**必选参数,常量名称,即标志符。
**value:**必选参数,常量的值。
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用
PHP字符串
字符串变量用于储存并处理文本
文本值给变量时,需给文本值加上单引号或者双引号
strlen()
返回字符串的长度 (字节数)
echo strlen("hello world!");
strpos()
用于在字符串内查找一个字符或一段指定的文本
在hello world中查找文本world
echo strpos("hello world","world");
运算符
字符串运算符
字符串运算符"."可将两个字符串连接起来,结合成一个新的字符串.PHP中"+"只能用作赋值运算符,而不能用作字符串运算符
算术运算符
算术运算符适合在有两个或者两个以上不同操作数的场合使用,当只有一个操作数时,要体现其增减变化,可以使用递增运算符 "++"或者递减运算符"--"
递增或递减运算符有两种使用方法.一种是将运算符放在变量前面,即先将变量作加一或减一的运算,然后再将值赋给原变量,叫做前置递增或递减运算符;另一种是将运算符放在变量后面,即先返回变量的当前值,然后变量的当前值作加一或减一的运算,叫做后置递增或递减运算符
PHP函数利用
判断
if 语句 - 在条件成立时执行代码
if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
switch 语句 - 在若干条件之一成立时执行一个代码块
if 语句用于仅当指定条件成立时执行代码。
if...else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码
if...elseif....else 语句
在若干条件之一成立时执行一个代码块
switch 语句
switch语句用于根据多个不同条件执行不同动作。
循环
while - 只要指定的条件成立,则循环执行代码块
do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
for - 循环执行代码块指定的次数
foreach - 根据数组中每个元素来循环代码块
while 循环
while 循环将重复执行代码块,直到指定的条件不成立。
do...while 语句
do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
数组
创建数组
array()函数用于创建数组
数值数组:带有数字ID键的数组
关联数组:带有指定的键的数组,每个键关联一个值
多维数组:包含一个或多个数组的数组
数值数组
自动分配ID键(ID键总是从0开始)
$cars=array("Volvo","BMW","Toyota");
获得数组的长度 count()函数
count()函数用于返回数组的长度(元素的数量)
$cars=array("Volvo","BMW","Toyota");
echo 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";
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
数组排序
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
sort() - 对数组进行升序排列
PHP全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。
PHP 超级全局变量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
PHP $GLOBALS
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
PHP $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
PHP函数利用
PHP函数准则
函数的名称应该提示出它的功能
函数名称以字母或下划线开头(不能以数字开头)
常见函数
phpinfo()
phpinfo函数可以显示出PHP所有相关信息.是排查配置php是否出错或漏配置模块的主要方式之一
eval()
eval()函数来执行一个字符串表达式,并返回表达式的值
system();
可以使用system函数来执行系统命令
魔术方法
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
LINE
文件中的当前行号
echo _LINE_;
FILE
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
echo _FILE_;
DIR
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。
FUNCTION
返回函数名称
echo _FUNCTION;
CLASS
类的名称
echo 'class name' . _CLASS_."<br>";
PHP表单
表单
PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="welcome.php" method="post">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>
</body>
</html>/
PHP获取下拉菜单的数据
PHP下拉菜单单选
<html>
<head>
<meta charset="utf-8">
</head>
<?php
$q=$_GET['q'];
if($q=="baidu"){
echo "www.baidu.com";
}elseif($q=="google"){
echo "www.google.com";
}elseif($q=="taobao"){
echo "www.taobao.com";
}
?>
<form action="" method="get">
<select name="q">
<option value="">选择一个站点:</option>
<option value="baidu">Baidu</option>
<option value="google">Google</option>
<option value="taobao">Taobao</option>
</select>
<input type="submit" value="提交">
</form>
</form>
PHP下拉菜单多选
如果下拉菜单是多选的( multiple="multiple"),通过将设置 select name="q[]" 以数组的方式获取
<html>
<head>
<meta charset="utf-8">
</head>
<?php
$a = $_POST['q'];
foreach($a as $aa){
echo $aa."</br>";
}
?>
<form action="" method="post">
<select multiple="multiple" name="q">
<option value="">选择一个站点:</option>
<option value="BAIDU">BAIDU</option>
<option value="GOOGLE">Google</option>
<option value="TAOBAO">Taobao</option>
</select>
<input type="submit" value="提交">
</form>
</form>
单选按钮表单
PHP 单选按钮表单中 name 属性的值是一致的,value 值是不同的
<html>
<head>
<meta charset="utf-8">
</head>
<form action="" method="get">
<input type="radio" name="q" value="RUNOOB" />Runoob
<input type="radio" name="q" value="GOOGLE" />Google
<input type="radio" name="q" value="TAOBAO" />Taobao
<input type="submit" value="提交">
</form>
checkbox 复选框
PHP checkbox 复选框可以选择多个值
<head>
<meta charset="utf-8">
</head>
<form action="" method="post">
<input type="checkbox" name="q[]" value="RUNOOB"> Runoob<br>
<input type="checkbox" name="q[]" value="GOOGLE"> Google<br>
<input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br>
<input type="submit" value="提交">
</form>
表单验证
PHP文件包含
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php include 'header.php'; ?>
<h1>欢迎来到我的主页!</h1>
<p>一些文本。</p>
</body>
</html>
文件以及文件上传
创建一个文件上传表单
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
创建上传脚本
<head>
<meta charset="utf-8">
</head>
<?php
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
?>
增加防止上传文件报错提示
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
?>
第一个参数是表单的 input name,第二个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。如下所示:
$_FILES["file"]["name"] - 上传文件的名称
$_FILES["file"]["type"] - 上传文件的类型
$_FILES["file"]["size"] - 上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
上传限制
<head>
<meta charset="utf-8">
</head>
<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);//explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
$extension = end($temp); // 获取数组最后的数值
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // 小于 200 kb
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "非法的文件格式";
}
?>
保存被上传的文件
<head>
<meta charset="utf-8">
</head>
<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp); // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // 小于 200 kb
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
// 判断当前目录下的 upload 目录是否存在该文件
// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}
else
{
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "非法的文件格式";
}
?>
COOKIE
cookie 常用于识别用户。
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
创建COOKIE
setcookie() 函数用于设置 cookie。
setcookie(name, value, expire, path, domain);
<?php
setcookie("user", "admin", time()+3600);
?>
使用isset()函数确认是否设置了cookie
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
echo "普通访客!<br>";
?>
</body>
</html>
删除cookie
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>
session
开始 PHP Session
<?php session_start(); ?>
<html>
<body>
</body>
</html>
储存session变量
使用PHP $_SESSION变量
<?php
session_start();
$_SESSION['views']=1;
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
echo "浏览量:". $_SESSION['views'];
?>
</body>
</html>
在下面的实例中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则创建 "views" 变量,并把它设置为 1:
<?php
session_start();
if(isset($_SESSION['views']))
{
$_SESSION['views']=$_SESSION['views']+1;
}
else
{
$_SESSION['views']=1;
}
echo "浏览量:". $_SESSION['views'];
?>
销毁session
使用unset()或session_destroy()函数
unset()函数用于释放指定的session变量
<?php
session_start();
if(isset($_SESSION['views']))
{
unset($_SESSION['views']);
}
?>
通过session_destroy()函数彻底销毁session
<?php
session_destroy();
?>