文章目录
- PHP概述
- 什么是phpstudy?
- phpstudy的目录
- PHP基本语法
- 变量
- 变量类型
- count() 函数:用来获取数组的长度
- 预定义超全局数组变量
- isset()函数
- move_uploaded_file()函数
- 变量的作用域
- 常量
- 运算符
- PHP语法错误
PHP概述
- PHP的语法借鉴吸收了c语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。
- PHP的主要目标是允许网络开发人员快速编写动态页面。
- 简单点说PHP主要被用于开发各种类型的网站程序。
- 细化点说PHP可以用于收集表单数据,生成动态网页,字符串处理,动态输出图像,处理服务器端文件,与数据库交互,会话跟踪,处理XML。文件支持大量的网络协议,服务器端的其他相关操作!
- PHP是脚本语言不需要事先编译(可以与HTML进行混编,脚本后缀依然是.php),在服务器端运行!
- PHP可以运行在windows,Linux等各种操作系统上!需要环境支持
什么是phpstudy?
搭建WAMP环境(Windows下的PHP环境)
phpstudy是php环境一键安装包!方便好用!
下载phpstudy 2016 https://www.xp.cn/wenda/407.html
phpStudy 2016版本程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有32M,有专门的控制面板。总之学习PHP只需一个包。对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。
注意:安装完成之后会提示你需要32位vc9的运行库,因为php5.3、5.4和apache都是用vc9编译,电脑必须安装vc9运行库才能运行。
下载vc9运行库 http://www.winwin7.com/soft/xtbd-7506.html
ok,打开phpstudy启动查看
相应的端口已经开放
网页可以正常访问
phpstudy的目录
http服务
E:\phpStudy\WWW
:存放所有的网页
- phpMyAdmin:管理数据库的可视化面板
- l.php:探针
- phpinfo.php
E:\phpStudy\php\php-5.4.45\php.ini
:php的配置文件
E:\phpStudy\MySQL\my.ini
:mysql的配置文件
mysql的初始用户名和密码是root/root
命令行登录mysql:mysql -uroot -proot
E:\phpStudy\Apache\conf\httpd.conf
:apache的配置文件
E:\phpStudy\Apache\logs
:apache的日志
PHP基本语法
- PHP语言标记
开始标记 <?php
结束标记 ?>
1、<?php ?>这之间就表示进入PHP模式,在开始和结束标记之外的内容都会被PHP解析器忽略。
2、可以直接嵌入到html代码中,并且可以嵌入到html代码中的任何地方。
3、在一个html文档中可以嵌入任意多个PHP标记!
4、文件末尾的PHP代码段结束标记可以不要,在一些情况下省略掉更好!
- 有两种在浏览器输出文本的基础指令:echo 和 print。
echo - 可以输出一个或多个字符串,用逗号隔开
print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
<?php
echo "This is php";
echo "<br/>";
echo "<span style='color:red;background-color:pink;'>Hello</span>";//可以输出html标签
?>
- 指令分隔符[;]
1、PHP用分号表示一句话的结束。
2、结束标记?>就隐含了一个分号,所以PHP代码最后一行可以不用加分号!
- 注释
/*
这是一个多行注释
*/
//这是一个单行注释
注意:PHP代码中的注释,不会显示在浏览器的源代码中
PHP 运行环境是服务器,我们浏览器端看到的是PHP 引擎运行PHP代码后的执行结果!
HTML 的运行环境是浏览器,所以能看到。
变量
变量是用于临时存储值的容器。
PHP脚本语言是一种弱类型的语言,和其他语言不同的是变量或者常量的数据类型由程序的上下文决定
- 命名规则
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
不要用PHP关键字命名
- 变量的声明
PHP 的特性之一就是它不要求在使用变量之前声明变量,但是需要初始化—>(当第一次给一个变量赋值时,你才创建了这个变量)。变量用于存储值比如数字、文本字符串或者数组。一旦设置了某个变量,我们就可以在脚本中重复的使用它。
PHP中变量必须使用美元符号$ 后面跟着变量名来表示,使用赋值操作符(=)给一个变量赋值。
echo $name;//没有初始化,会报错
$name = "BOb";
echo $name;
- 变量的释放unset()
<?php
echo $name;//没有初始化,会报错
$name = "BOb";
echo $name;
echo "<hr />";
unset($name);//释放变量
echo $name;
?>
- 可变变量
<?php
$name = "BOb";
$$name = "Alice";
echo $name;
echo "<br />";
echo $$name;
echo "<br />";
echo $BOb;
?>
- 变量的引用赋值&
<?php
$a = 10;
$b = $a;//常规赋值
$b = $b+1;
echo $a;
echo "|";
echo $b;
echo "<br />";
$c = &$a;//引用赋值
$c = $c+1;
echo $a;
echo "|";
echo $c;
?>
变量类型
- 布尔类型:true/false
<?php
$man = true;
$woman = false;
echo $man;
echo "|";
echo $woman;//echo输出false的时候,输出空白
echo "<br />";
var_dump($man);//输出变量的类型和值
var_dump($woman);
?>
以下内容会被当作false,其他均会被认为true
1、布尔值false
2、0
3、浮点型0.0
4、空白字符串和字符串0
5、没有成员的空数组
6、NULL
- int型(整型):存储整数
- float(浮点型):存储小数
- string(字符串)
1、单引号’‘引起来:单引号定义的字符串里面含有单引号时需要转义[\’],单引号中无法引用变量$ (不起作用)
2、双引号""引起来:双引号可以包含单引号,可以引用变量$ (开始),但是无法识别结尾,所以要用大括号{}将变量括起来,双引号中想输出$字符的话,需要转义\$
前面两种输出各种特殊字符都需要转义
3、定界符<<<:<<<之后提供一个标识符(字母数字下划线,不能以数字开头)开始,然后中间输入字符串的内容,最后以同样的标识符结束,结束标识符后必须加;不可以接其它字符串
<?php
$name = "php";
echo $str = 'Hello,$name,let\'s go!';
echo "<br/>";
echo $strr = "Hello,{$name},let's go!";
?>
<?php
echo $str = <<<text
sdadasjajdkajhf$%^&***\\\\!!!>>><<<<<
text;
?>
- 数组(复合数据类型)
数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
array() 函数用于创建数组:
两种数值数组的创建方式:
<!--第一种:自动分配 ID 键(ID 键总是从 0 开始):-->
<?php
$array = array("Hanhan",20,true);
print_r($array);//输出数组的值
var_dump($array);//输出类型以及值
?>
<!--第二种:人工分配 ID 键:-->
<?php
$array[0] = "haha";
$array[1] = 20;
$array[2] = false;
var_dump($array);
?>
count() 函数:用来获取数组的长度
<?php
$cars = array("Volvo","BMW","Toyota");
echo count($cars);//3
?>
两种关联数组的创建方式:
<?php
$bge=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
?>
可以使用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
// 二维数组:
$cars = array
(
array("Volvo",100,96),
array("BMW",60,59),
array("Toyota",110,100)
);
print("<pre>");//格式化输出数组
print_r($cars);
print("<pre>");//格式化输出数组
?>
遍历二维数组并将结果输出到表格中:
<?php
header("content-type:text/html;charset='utf-8'");
// 二维数组:
$cars = array
(
array("Volvo",100,96000),
array("BMW",60,59000),
array("Toyota",110,100000)
);
?>
<table border="1">
<tr>
<td>name</td>
<td>size</td>
<td>price</td>
</tr>
<?php foreach($cars as $car){ ?>
<tr>
<td><?php echo $car[0]?></td>
<td><?php echo $car[1]?></td>
<td><?php echo $car[2]?></td>
</tr>
<?php }?>
</table>
预定义超全局数组变量
PHP定义好了的,可以直接使用,函数内外都可以用
名称 | 作用 |
---|---|
$GLOBALS | 用来存放全局变量的数组 |
$_SERVER | 一个包含了诸如头信息(header)路径(path)、以及脚本位置(script locations)等信息的数组 |
$_GET | 通过url参数传递给当前脚本的变量的数组(获得get方式提交的参数) |
$_POST | 当http post请求的Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data时,会将变量以关联数组的形式传入当前的脚本 |
$_FILES | 通过http post 方式上传到当前脚本的项目的数组(文件上传信息) |
$_COOKIE | 通过http cookies 方式传递给当前的脚本的变量的数组 |
$_SESSION | 当前脚本可用SESSION的数组 |
$_REQUEST | 默认情况下包含了 $_GET $_POST 和 $_COOKIE的数组 |
$_ENV | 通过环境方式传递给当前脚本的变量的数组 |
isset()函数
作用:判断变量是否被定义,返回值为布尔类型
上传文件
<html>
<meta charset="utf-8">
<h1>欢迎登录</h1>
<form action="" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="userFileUp">
<input type="submit" name="userSubmit" value="提交">
</form>
</html>
<br/>
<pre/>
<?php
header("content-type:text/html;charset=utf-8");
if(isset($_POST["userSubmit"])){//判断是否是用户通过表单提交的
var_dump($_FILES);
}
?>
move_uploaded_file()函数
将文件移动到指定文件夹,返回值为布尔类型
进一步优化,我们发现文件上传后在目录里面找不到,因为是个缓存很快就消失了
<html>
<meta charset="utf-8">
<h1>欢迎登录</h1>
<form action="" method="post" enctype="multipart/form-data">
<!-- 用户名:<input type="text" name="userName"> <br/>
密码:<input type="password" name="userPasswd"><br/> -->
上传文件:<input type="file" name="userFileUp">
<input type="submit" name="userSubmit" value="提交">
</form>
</html>
<br/>
<pre/>
<?php
header("content-type:text/html;charset=utf-8");
if(isset($_POST["userSubmit"])){
$tmp = $_FILES["userFileUp"]["tmp_name"];//缓存目录
$path = __DIR__."\\".$_FILES['userFileUp']['name'];//当前目录的路径
echo $path;//文件保存的路径
move_uploaded_file($tmp,$path);
}
?>
变量的作用域
变量的作用域是脚本中变量可被引用/使用的部分。PHP 有四种不同的变量作用域:
local
global
static
parameter
- 局部变量:在函数内部定义的变量,只能在函数内部访问
- 全局变量:在所有函数外部定义的变量,除了函数外,全局变量可以被任何脚本中的任何部分访问
要想在函数中访问全局变量,需要用到global关键字声明,或者传参
<?php
header("Content-Type: text/html;charset=utf-8");//防止中文乱码
$x = 5;//全局变量
function myTest(){
global $x;//先声明
$y = 10;//局部变量
echo "变量x为:$x";
echo "<br/>";
echo "变量y为:$y";
}
myTest();
?>
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
上面的程序可以改成这样:
<?php
header("Content-Type: text/html;charset=utf-8");
$x = 5;//全局变量
function myTest(){
$y = 10;//局部变量
echo "变量x为:".$GLOBALS['x'];
echo "<br/>";
echo "变量y为:$y";
}
myTest();
?>
- 静态变量:在函数内部定义,并用static修饰符修饰,仅在函数初次执行时被初始化!
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字:
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
myTest();
myTest();
myTest();
?>
注意:每次调用该函数时,该变量将会保留着函数前一次被调用时的值。该变量仍然是函数的局部变量。
- 参数的传递
按值传递参数(默认方式):对形参的操作不会对实参产生影响
<?php
function myTest($x)
{
echo ++$x;
echo "<br/>";
}
$a = 5;
myTest($a);
echo $a;
?>
按引用传递参数:相当于给实参起了个别名,对形参的操作会对实参产生影响
<?php
function myTest(&$x)//引用传参
{
echo ++$x;
echo "<br/>";
}
$a = 5;
myTest($a);
echo $a;
?>
默认传参:如果没有给函数传递参数,就取默认值;传了就按照传的值
<?php
function myTest($x = 1,$y = 2)
{
echo ++$x."<br/>".(++$y);
echo "<br/>";
}
myTest(5,10);
myTest()
?>
可变长度参数列表:PHP内置函数
func_get_args():获取传递参数列表,并以数组的形式返回
func_get_arg():根据参数偏移量,从零开始计数,获取参数列表
func_num_args():返回传递参数的个数
<?php
function myTest()
{
echo func_get_arg(1)."<br>";//偏移量是从0开始的
$arry = func_get_args();//返回数组
for($i = 0;$i < func_num_args();$i++){//遍历数组
echo $arry[$i]."<br/>";
}
echo func_num_args();//查看个数
}
myTest(5,10);//不会报错
?>
常量
定义define(常量名,值)
<?php
define("NAME","Bob");
var_dump(NAME);
?>
- 预定义常量
__FILE__
:当前文件的文件名(带路径)
__LINE__
:当前的行数
__FUNCTION__
:当前的函数名
__CLASS__
:当前的类名
__METHOD__
:当前对象的方法名
PHP_OS
:UNIX或WINNT等
PHP_VERSION
:当前PHP服务器的版本
DIRECTORY_SEPARATOR
:根据当前操作系统获取目录的分隔符,Windows:\,Linux:/
- 常量的作用域是超全局的,哪里都能调用!
运算符
- 算数运算符
运算符 | 名称 | 描述 | 实例 | 结果 |
---|---|---|---|---|
$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 | 1 |
- $x | 取反 | x 取反 | 2 | |
$a . $b | 并置 | 连接两个字符串 | “Hi” . “Ha” | HiHa |
++$a | 前加 | 自增1,然后返回 | ||
$a++ | 后加 | 先返回,再自增 | ||
–$a | 前减 | 先自减1,再返回 | ||
$a– | 后减 | 先返回,再自减1 |
- 逻辑运算符
运算符 | 名称 | 描述 |
---|---|---|
x and y | 与 | 如果 x 和 y 都为 true,则返回 true |
x or y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true |
x xor y | 异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true |
x && y | 与 | 如果 x 和 y 都为 true,则返回 true |
或 | 如果 x 和 y 至少有一个为 true,则返回 true | |
! x | 非 | 如果 x 不为 true,则返回 true |
- 比较运算符
运算符 | 名称 | 描述 |
---|---|---|
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 |
x > y | 大于 | 如果 x 大于 y,则返回 true |
x < y | 小于 | 如果 x 小于 y,则返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true |
x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true |
- 运算符优先级:由高到低排列
运算符 | 描述 |
---|---|
! | 逻辑运算符 |
* / % | 算术运算符 |
+ – . | 算术运算符和字符串运算符 |
&& | 逻辑运算符 |
逻辑运算符 | |
? : | 三元运算符 |
= += -= *= /= .= %= | 赋值运算符 |
and | 逻辑运算符 |
xor | 逻辑运算符 |
or | 逻辑运算符 |
, | 多处用到 |
PHP语法错误
- Error:结束脚本执行
- Warning:只提示,不影响执行
- Notice:只提示,不影响执行