php有3种不同的变量作用域:
>local(局部)
>global(全局)
>static(静态)
函数之外声明的变量拥有global作用域,只能在函数以外访问;
函数内部声明的变量拥有local作用域,只能在函数内部进行访问;
在变量前添加global关键字可以访问函数内的全局变量;
变量$GLOBALS[index]数组中存储了所有的全局变量,这个数据可以在函数内访问并更新;
static当函数执行完后,变量值生命周期仍存在;
//
echo "This","is","a","test";
print "123";
差异:
echo 能输出一个以上的字符串。它不返回任何值。
print 只能输出一个字符串,并始终返回1。
echo "my car is a {$cars[0]}"; // $cars=array("BMW", "BENZ"); 是个数组
//
字符串可以使用单引号(')或双引号(")
//
var_dump() 会返回变量的数据类型和值
如:
整数:
$x=1234
var_dump($x) ==> int(1234)
浮点数:
$x=10.35
var_dump($x) ==> float(10.35)
数组:
$cars=array("Volvo","BMW","BENZ");
var_dump($cars); ==>array(3) {[0]=> string(5) "Volvo" [1]=> string[3] "BMW" [2]=> string[4] "BENZ"}
//
对象: 对象是存储数据和有关处理数据的信息的数据类型。使用关键字class;
class Car
{
var $color;
function Car($color = "green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
//
NULL值:表示无值;标示变量是否为空;也用于区分空字符串与空值数据库;
可以通过把值设置为NULL,将变量清空。
//
strlen() 返回字符串的长度。
echo strlen("Hello world!") ==> 12
strpos() 用于检索字符串内指定的字符或文本。
如果找到,返回首个匹配的字符位置,没找到则返回FALSE。
echo strpos("Hello world!", "world"); ==>6 字符串首位置是0开始。
//
常量: 在脚本中无法改变该值。常量名称前面没有$符号。常量是全局的。
用define(x,y,z)函数设置常量:
参数1:定义常量的名称。
参数2:定义常量的值。
参数3:可选。默认是false(大小写敏感)。是否大小写敏感。
define("GREETING", "Welcome to w3cschool!");
echo GREETING;
//
字符串运算符:
. 串接 $txt1 = "Hello"; $txt2 = $txt1 . " world"; ==> $txt2 = "Hello world"
.= 串接赋值 $txt1 = "Hello"; $txt1 .= " world"; ==>$txt1 = "Hello world"
递增递减运算符:
++$x ==> $x加1,然后返回$x
$x++ ==> 返回$x,然后$x加1
比较运算符:
=== 全等(完全相同) $x等于$y,且它们类型相同,则返回true
<> 不等于
!== 不全等(完全不同) $x !== $y 如果$x不等于$y,且它们类型不相同,则返回true
逻辑运算符:
and 与 两个为true,返回true
or 或 至少一个为true,返回true
xor 异或 两个之中有且只有一个true,返回true
&& 与
|| 或
! 非
数组运算符:
+ 联合 $x+$y ==> $x和$y的联合(但不覆盖重复的键)
== 相等
=== 全等
!= 不相等
<> 不相等
!== 不全等
//
条件语句
if () {
} elseif () {
} else {
}
//
switch(expression)
{
case "grey":
break;
default:
break;
}
// 循环
while:
do..while:
for:
foreach:只适用于数组,遍历数组中的每个元素并循环代码块。
语法: foreach ($array as $value) {...}
// 函数
函数名对大小写不敏感。
// 数组
php中有三种数组类型:
索引数组:带有数字索引的数组
$cars[0] = "BMW";
关联数组:带有指定键的数组;2种方法创建
$age=array("peter"=>"32", "Ben"=>"25");
或:
$age['peter'] = "35";
多维数组:包含一个或多个数组的数组
count()函数用于返回数组的长度(元素个数)
// 数组排序
数组中的元素能够以字母或数字顺序进行升序或降序排序。a值,k键,r降序
sort():以升序对数组排序
rsort():降序
asort():根据值,升序
ksort():根据键,升序
arsort():根据值,降序
krsort():根据键,降序
// 超全局变量
在全部作用域中始终可用的内置变量。
超全局变量有:
$GLOBALS
$_SERVER 保存关于报头、路径和脚本位置的信息
$_REQUEST 用于收集html表单提交的数据
$_POST 广泛用于收集提交method="post"的html表单后的表单数据。$_POST也常用于传递变量
$_GET 用于收集提交html表单method="get"之后的表单数据
$_FILES
$_ENV
$_COOKIE
$_SESSION
其中:
1)_SERVER['PHP_SELF']
返回当前执行脚本的文件名
2)_SERVER['GATEWAY_INTERFACE']
返回服务器使用的CGI规范的版本
3)_SERVER['SERVER_ADDR']
返回当前运行脚本所在的服务器的IP地址
4)SERVER_NAME
返回当前运行脚本所在的服务器的主机名(www.baidu.com)
5)SERVER_SOFTWARE
返回服务器标识字符串(apache/2.2.24)
6)SERVER_PROTOCOL
返回请求页面时通信协议的名称和版本("HTTP/1.1")
7)REQUEST_METHOD
返回访问页面使用的请求方法(如POST)
8)REQUEST_TIME
返回请求开始时的时间戳(1525687494)
9)QUERY_STRING
返回查询字符串,如果通过查询字符串访问此页面
10)HTTP_ACCEPT
返回来自当前请求的请求头
11)HTTP_ACCEPT_CHARSET
返回来自当前请求的accept_charset头(如utf-8,iso-8859-1)
12)HTTP_HOST
返回来自当前请求的host头
13)HTTP_PEFERER
返回当前页面的完整URL(不可靠,因为不是所有用户代理都支持)
14)HTTPS
是否通过安全HTTP协议查询脚本
15)REMOTE_ADDR
返回浏览当前页面的用户的IP地址
16)REMOTE_HOST
返回浏览当前页面的用户的主机名
17)REMOTE_PORT
返回用户机器上连接到web服务器所使用的端口号
18)SCRIPT_FILENAME
当前执行脚本的绝对路径
19)SERVER_ADMIN
该值指明了apache服务器配置文件中的SERVER_ADMIN参数
20)SERVER_PORT
web服务器使用的端口,默认为80
21)SERVER_SIGNATURE
返回服务器版本和虚拟主机名
22)PATH_TRANSLATED
当前脚本所在文件系统的基本路径
23)SCRIPT_NAME
返回当前脚本的路径
24)SCRIPT_URI
返回当前页面的URI
>$_GET例子
"test_get.php?subject=PHP&web=www.baidu.com"
echo "study" . $_GET['subject'] . " at " . $_GET['web'];
// 表单处理
GET与POST
get与post都创建数组,其中键是表单控件的名称,值来自用户的输入数据;
$_GET是通过URL参数传递到当前脚本的变量数组
$_POST是通过HTTP POST传递到当前脚本的变量数组
通过GET方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在URL中);发送信息的数量在2千个字符;
通过POST方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入HTTP请求的主体中),对发送信息的数量也无限制
// 表单验证
htmlspecialchars()函数把特殊字符转换为HTML实体,这意味着 < 和 > 之类的html字符会被替换为< 和 >
通过htmlspecialchars()函数能够避免$_SERVER['PHP_SELF']被利用;
在用户提交表单时,我们还要做2件事:
1>通过php trim()函数去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
2>通过php stripslashes()函数,删除用户输入数据中的反斜杠()
// 表单必填
empty($_POST["name"])检查变量是否为空
// 表单验证email和url
if (!preg_match("/^[a-zA-Z]*$/", $name)){...}
preg_match()函数检索字符串的模式,如果模式存在则返回true,否则返回false;
验证email
if (!preg_match("/([w-]+@[w-]+.[w-]+)/", $email)) {...}
验证URL
if (!preg_match("/(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website)) {...}
// 在用户提交表单后保留输入字段中的值