PHP基础(二)

文章目录

  • 1. PHP常量
    • 1.1 define定义常量
    • 1.2 常量作用域
    • 1.3 大小写不敏感设置
  • 2. PHP条件判断
  • 3. 超级全局变量
    • 3.1 GLOBALS
    • 3.2 $_SERVER
    • 3.3 $_REQUEST
    • 3.4 $_POST
    • 3.5 $_GET
  • 4. PHP循环
    • 4.1 while
    • 4.2 do...while
    • 4.3 for
    • 4.4 foreach

1. PHP常量

1.1 define定义常量

define(name, value [,case_insensitive=false])

PHP常量利用define定义;常量名不需要带$符号。默认是大小写敏感的。并且常量一经创建就无法修改其值。

define('pi','3.14');
echo pi; // 3.14

1.2 常量作用域

常量在定义后,作用域默认是全局的。

define('name','zhaoyun');
echo name."
"
; echo Name; // 默认大小写敏感,Name无法识别。 // 作用域:常量在定义后,默认是全局的。 function constant_test(){ echo name; define('fun', 'test'); // 在函数内部定义的常量,作用域依然是全局的 echo fun; } constant_test(); echo fun;

1.3 大小写不敏感设置

使用define定义常量默认大小写敏感,将最后一个参数设置为true则为不敏感。

define('name','zhaoyun', true);
echo name."
"
; // zhaoyun echo Name; // zhaoyun

2. PHP条件判断

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";
}

3. 超级全局变量

PHP中定义了几个超级全局变量,除了$GLOBALS,前面都有一个下划线_

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

3.1 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();
?>

3.2 $_SERVER

$_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”。

3.3 $_REQUEST

接收HTML表单提交的数据。method可以是GETPOST

<form method='GET' action="$_SERVER['PHP_SELF']; ?>">
	Name: <input type="text" name="fname">
	<input type="submit">
</form>


	$name = $_REQUEST['fname'];
	echo "

".$name; ?>


3.4 $_POST

接收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; ?>


3.5 $_GET

  1. 接收从URL提交的参数。(?xx=xxx)
  2. 接收HTML表单提交的数据,method要设置为GET
<form method='GET' action="$_SERVER['PHP_SELF']; ?>">
	Name: <input type="text" name="fname">
	<input type="submit">
</form>

 
	$name = $_REQUEST['fname'];
	echo "

".$name; ?>


4. PHP循环

PHP主要有如下循环:

  • while: 只要条件成立,则循环执行代码块
  • do…while:首先执行一次代码块,然后当条件成立时,重复执行这个代码块
  • for:指定循环次数
  • foreach:根据数组中每个元素来循环代码块

其中,while,do...while,for的用法和C语言基本相同。重点学习foreach


4.1 while

语法:

while(条件){
     
代码;
}

4.2 do…while

语法:

do{
     
代码;
}
while(条件);

4.3 for

语法:

for(初始值;条件;增量){
     
代码;
}

4.4 foreach

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*/

你可能感兴趣的:(PHP)