define(name, value [,case_insensitive=false])
PHP常量利用define定义;常量名不需要带$
符号。默认是大小写敏感的。并且常量一经创建就无法修改其值。
define('pi','3.14');
echo pi; // 3.14
常量在定义后,作用域默认是全局的。
define('name','zhaoyun');
echo name."
";
echo Name; // 默认大小写敏感,Name无法识别。
// 作用域:常量在定义后,默认是全局的。
function constant_test(){
echo name;
define('fun', 'test'); // 在函数内部定义的常量,作用域依然是全局的
echo fun;
}
constant_test();
echo fun;
使用define
定义常量默认大小写敏感,将最后一个参数设置为true
则为不敏感。
define('name','zhaoyun', true);
echo name."
"; // zhaoyun
echo Name; // zhaoyun
PHP中条件判断有if语句和switch语句。语法和c语言大致相同。
记录一下格式用法:
$name = 'test';
if($name=='test'){
echo $name;
}elseif($name=='tests'){
echo $name;
}else{
echo 'error';
}
$name = 'test';
switch($name){
case 'test':
echo "hello";
break;
default:
echo "error";
}
PHP中定义了几个超级全局变量,除了$GLOBALS
,前面都有一个下划线_
用户自己在编写PHP脚本时所定义的全局变量都会存储在超级全局变量数组$GLOBALS
中。在局部作用于访问全局变量的时候,可以通过$GLOBALS
访问。
$name='zs';
$age=18;
$gender='man';
// echo $name;
function test(){
echo $name; // 全局变量无法访问
echo $GLOBALS['name'] . $GLOBALS['age'] . $GLOBALS['gender']; // 通过$GLOBALS访问
}
test();
?>
$_SERVER
是一个存储了当前脚本路径,服务器相关信息,请求用户的信息等等数据的数组。
如下是结合菜鸟教程给出的表格测试得出的具体数据:
脚本路径:
元素代码 | 描述 |
---|---|
$_SERVER[‘PHP_SELF’] | 当前脚本的路径,从网站根目录开始 /test/super.php |
$_SERVER[‘SCRIPT_NAME’] | 包含当前脚本的路径。/test/super.php |
$_SERVER[‘SCRIPT_FILENAME’] | 当前脚本的绝对路径,从服务器的根开始F:/phpstudy/PHPTutorial/WWW/test/super.php |
服务器信息:
元素代码 | 描述 |
---|---|
$_SERVER[‘SERVER_ADDR’] | 运行当前脚本的服务器的IP地址 |
$_SERVER[‘SERVER_NAME’] | 运行当前脚本的主机的主机名 |
$_SERVER[‘SERVER_SOFTWARE’] | 服务器标识,如apache |
$_SERVER[‘SERVER_PROTOCOL’] | 请求页面所用的通讯协议及版本;HTTP/1.1 |
$_SERVER[‘SERVER_PORT’] | web服务器使用的端口 |
用户信息:
元素代码 | 描述 |
---|---|
$_SERVER[‘REMOTE_ADDR’] | 获取请求用户的IP地址 |
$_SERVER[‘REMOTE_HOST’] | 用户的主机名 |
$_SERVER[‘REMOTE_PORT’] | 用户连接到服务器所使用的端口号 |
请求信息:
元素代码 | 描述 |
---|---|
$_SERVER[‘REQUEST_METHOD’] | 访问页面的请求方法 |
$_SERVER[‘REQUEST_TIME’] | 请求开始的时间戳 |
$_SERVER[‘QUERY_STRING’] | 查询字符串,url后面的?xx=xxx |
$_SERVER[‘HTTP_ACCEPT’] | 获取请求头中的accept的内容 |
$_SERVER[‘HTTP_ACCEPT_CHARSET’] | 获取请求头中accept-charset的内容 |
$_SERVER[‘HTTP_HOST’] | 请求头中的host |
$_SERVER[‘HTTP_REFERER’] | 请求头中的referer |
$_SERVER[‘HTTPS’] | 如果脚本是通过https访问的,则被设置为一个非空的值 |
以下为教程中提到的,但是在本地测试无输出结果:
元素代码 | 描述 |
---|---|
$_SERVER[‘GATEWAF_INTERFACE’] | 服务器使用的 CGI 规范的版本;测试被忽略 |
$_SERVER[‘SERVER_ADMN’] | 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数 |
$_SERVER[‘SERVER_SIGNATURE’] | 包含了服务器版本和虚拟主机名的字符串 |
$_SERVER[‘PATH_TRANSLATED’] | 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。 |
$_SERVER[‘SCRIPT_URI’] | URI 用来指定要访问的页面。例如 “/index.html”。 |
接收HTML表单提交的数据。method
可以是GET
或POST
。
<form method='GET' action="$_SERVER['PHP_SELF']; ?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
$name = $_REQUEST['fname'];
echo ""
.$name;
?>
接收HTML表单提交的数据,但是method
要设置为POST。
<form method='POST' action="$_SERVER['PHP_SELF']; ?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
$name = $_REQUEST['fname'];
echo ""
.$name;
?>
method
要设置为GET
<form method='GET' action="$_SERVER['PHP_SELF']; ?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
$name = $_REQUEST['fname'];
echo ""
.$name;
?>
PHP主要有如下循环:
其中,while
,do...while
,for
的用法和C语言基本相同。重点学习foreach
。
语法:
while(条件){
代码;
}
语法:
do{
代码;
}
while(条件);
语法:
for(初始值;条件;增量){
代码;
}
foreach循环用于遍历数组。
语法
foreach($array as $value){
代码;
}
每次执行循环的时候,会将数组$array
的一个元素赋值给$value
;同时指针后移。
遍历数值数组:
$colors = array("red", "yellow", "blue");
foreach($colors as $color){
echo $color."
";
}
?>
/*red
yellow
blue*/
遍历关联数组:
$students = array(1=>'zhangsan',2=>'lisi',3=>'wangwu');
foreach($students as $number=>$name){
echo "number: ".$number."; name: ".$name."
";
}
/*number: 1; name: zhangsan
number: 2; name: lisi
number: 3; name: wangwu*/