PHP全站开发工程师-第04章 PHP基础语法

 

 

第二阶段(后端) 25天 144学时

第04章 PHP基础语法(12)

[学习课时] 本章共需要学习  12  课时

[目的要求] 

  1. 掌握PHP的基本语法结构
  2. 掌握PHP变量的使用和特征
  3. 掌握PHP运算符的分类和使用

[教学内容] 

PHP 简介

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。

 

脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。

 

  • PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
  • PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
  • PHP 文件的默认文件扩展名是 ".php"
  • PHP 脚本以 结束
  • PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
  • PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
  • PHP 提供了广泛的数据库支持

PHP 输出

PHP中有四种输出方法:

 

  • echo()可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
  • print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
  • print_r():可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
  • var_dump()判断一个变量的类型与长度,并输出变量的数值,如果变量有值输出的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

 

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

PHP 变量

与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。

变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。

 

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

 

PHP 没有声明变量的命令。变量在您第一次赋值给它的时候被创建:

$txt="Hello world!"; $x=5; $y=10.5; ?>

 

不必向 PHP 声明该变量的数据类型。

PHP 会根据变量的值,自动把变量转换为正确的数据类型。

 

  1. 数据类型

四种基本数据类型

  • String(字符串),
  • Integer(整型),
  • Float(浮点型),
  • Boolean(布尔型),

 

两种复合数据类型

  • Array(数组),
  • Object(对象),

 

一种特殊

  • NULL(空值)

 

整型

整数是一个没有小数的数字。

 

整数规则:

  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数
  • 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

案例:demo01

$x = 5985;

var_dump($x);//输出变量的值和变量的类型

echo "
"
;

$x = -345; // 负数

var_dump($x);//输出变量的值和变量的类型

echo "
"
;

$x = 0x8C; // 十六进制数

var_dump($x);//输出变量的值和变量的类型

echo "
"
;

$x = 047; // 八进制数

var_dump($x);//输出变量的值和变量的类型

?>

效果图

 

浮点型

浮点数是带小数部分的数字,或是指数形式。

 

案例:demo02

$x = 10.365;//小数

var_dump($x);//输出变量的值和变量的类型

echo "
"
;

$x = 2.4e3;//指数

var_dump($x);//输出变量的值和变量的类型

echo "
"
;

$x = 8e-4;

var_dump($x);//输出变量的值和变量的类型

?>

效果图

 

布尔型

布尔型可以是 TRUE 或 FALSE。

 

案例:demo03

$x = true;//小数

var_dump($x);//输出变量的值和变量的类型

echo "
"
;

$x = false;//指数

var_dump($x);//输出变量的值和变量的类型

?>

效果图

 

数组

数组可以在一个变量中存储多个值。

 

案例:demo04

$cars=array('你好','菲菲','大牛');

var_dump($cars);//输出变量的值和变量的类型

echo '
'
;

$per=['哈哈','嘿嘿','嘻嘻'];

var_dump($per);//输出变量的值和变量的类型

echo '
'
;

$flute = array('apple'=>'red','bananar'=>'yellow');

var_dump($flute);//输出变量的值和变量的类型

?>

效果图

 

 

 

对象

对象数据类型也可以用于存储数据。

 

在 PHP 中,对象必须声明。

 

首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

 

然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

 

案例:demo05

class Car{

  public $color;

  function __construct($color="green") {

    $this->color = $color;

  }

  function what_color() {

    return $this->color;

  }

}

 

// 实例一个对象

$herbie = new Car("white");

var_dump($herbie);

?>

效果图

 

NULL 值

NULL 值表示变量没有值。

  • NULL 是数据类型为 NULL 的值。
  • NULL 值指明一个变量是否为空值。同样可用于数据空值和NULL值的区别。
  • 可以通过设置变量值为 NULL 来清空变量数据

 

实例:demo06

$x="Hello world!";

$x=null;

var_dump($x);

?>

                                                                                      效果图

 

输出:NULL

 

  1. 变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。

 

PHP 有四种不同的变量作用域:

 

  • Local:在 PHP 函数内部声明的变量,仅能在函数内部访问
  • Global:在所有函数外部定义的变量,拥有全局作用域,可以使用global关键字在任何部分访问。如:global $x,$y;
  • Static:当一个函数完成时,它的所有变量通常都会被删除。使用 static 关键字修饰的变量不会随着函数的结束而被删除,会一直保留
  • Parameter:参数是通过调用代码将值传递给函数的局部变量

 

注意:PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

 

实例:demo07

$x = 5;//全局变量不能在方法内部直接使用

$y = 10;//全局变量不能在方法内部直接使用

 

function myTest($para) {

echo "参数变量:{$para}
"
;

$z = 20;//局部变量只能在这个方法内部使用

global $y;//申明$y是一个全局变量

$z = $GLOBALS['x'] + $y;

echo "局部变量z={$z}
"
;

static $w = 3;//静态变量,方法结束后保留其值

$w++;

echo "静态变量w={$w}
"
;

echo '-----------------------
'
;

}

myTest(234);

myTest('传入的参数');

 

?>

效果图

PHP全站开发工程师-第04章 PHP基础语法_第1张图片

 

 

  1. 超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。

PHP 超级全局变量列表:

 

  • $GLOBALS - 引用全局作用域中可用的全部变量
  • $_SERVER - 服务器和执行环境信息
  • $_REQUEST - HTTP Request 变量
  • $_POST - HTTP POST 变量
  • $_GET - HTTP GET 变量
  • $_FILES - HTTP 文件上传变量
  • $_COOKIE - HTTP Cookies
  • $_SESSION - Session 变量
  • $_ENV - 环境变量

 

案例:demo08

$x = 5;//全局变量不能在方法内部直接使用

print_r($GLOBALS);//输出数组

?>

效果图

PHP全站开发工程师-第04章 PHP基础语法_第2张图片

 

$GLOBALS

 

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。

 

$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

 

案例:demo09

$x = 5;//全局变量不能在方法内部直接使用

$y = 10;//全局变量不能在方法内部直接使用

 

function myTest($key,$para) {

    $GLOBALS[$key] = $para;//在方法内创建全局变量

}

myTest('z',234);

myTest('w','传入的参数');

 

print_r($GLOBALS);

?>

效果图

PHP全站开发工程师-第04章 PHP基础语法_第3张图片

 

$_SERVER

 

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

 

元素/代码

描述

$_SERVER['PHP_SELF']

当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar__FILE__ 常量包含当前(例如包含)文件的完整路径和文件名。 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。

$_SERVER['GATEWAY_INTERFACE']

服务器使用的 CGI 规范的版本;例如,"CGI/1.1"

$_SERVER['SERVER_ADDR']

当前运行脚本所在的服务器的 IP 地址。

$_SERVER['SERVER_NAME']

当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(: www.runoob.com)

$_SERVER['SERVER_SOFTWARE']

服务器标识字符串,在响应请求时的头信息中给出。 (如:Apache/2.2.24)

$_SERVER['SERVER_PROTOCOL']

请求页面时通信协议的名称和版本。例如,"HTTP/1.0"

$_SERVER['REQUEST_METHOD']

访问页面使用的请求方法;例如,"GET", "HEAD""POST""PUT"

$_SERVER['REQUEST_TIME']

请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)

$_SERVER['QUERY_STRING']

query string(查询字符串),如果有的话,通过它进行页面访问。

$_SERVER['HTTP_ACCEPT']

当前请求头中 Accept: 项的内容,如果存在的话。

$_SERVER['HTTP_ACCEPT_CHARSET']

当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:"iso-8859-1,*,utf-8"

$_SERVER['HTTP_HOST']

当前请求头中 Host: 项的内容,如果存在的话。

$_SERVER['HTTP_REFERER']

引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。)

$_SERVER['HTTPS']

如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。

$_SERVER['REMOTE_ADDR']

浏览当前页面的用户的 IP 地址。

$_SERVER['REMOTE_HOST']

浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR

$_SERVER['REMOTE_PORT']

用户机器上连接到 Web 服务器所使用的端口号。

$_SERVER['SCRIPT_FILENAME']

当前执行脚本的绝对路径。

$_SERVER['SERVER_ADMIN']

该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:[email protected])

$_SERVER['SERVER_PORT']

Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。

$_SERVER['SERVER_SIGNATURE']

包含了服务器版本和虚拟主机名的字符串。

$_SERVER['PATH_TRANSLATED']

当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。

$_SERVER['SCRIPT_NAME']

包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。

$_SERVER['SCRIPT_URI']

URI 用来指定要访问的页面。例如 "/index.html"

 

案例:demo10

print_r($_SERVER);

?>

效果图

Array

[PATH] => C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps

    [SYSTEMROOT] => C:\windows

    [COMSPEC] => C:\windows\system32\cmd.exe

    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

    [WINDIR] => C:\windows

    [PHP_FCGI_MAX_REQUESTS] => 1000

    [PHPRC] => D:/phpStudy/PHPTutorial/php/php-7.0.12-nts/

    [_FCGI_SHUTDOWN_EVENT_] => 2136

    [SCRIPT_NAME] => /source-php/demo10/index.php

    [REQUEST_URI] => /source-php/demo10/index.php

    [QUERY_STRING] =>

    [REQUEST_METHOD] => GET

    [SERVER_PROTOCOL] => HTTP/1.1

    [GATEWAY_INTERFACE] => CGI/1.1

    [REMOTE_PORT] => 62773

    [SCRIPT_FILENAME] => D:/phpStudy/PHPTutorial/WWW/source-php/demo10/index.php

    [SERVER_ADMIN] => [email protected]

    [CONTEXT_DOCUMENT_ROOT] => D:/phpStudy/PHPTutorial/WWW

    [CONTEXT_PREFIX] =>

    [REQUEST_SCHEME] => http

    [DOCUMENT_ROOT] => D:/phpStudy/PHPTutorial/WWW

    [REMOTE_ADDR] => 127.0.0.1

    [SERVER_PORT] => 80

    [SERVER_ADDR] => 127.0.0.1

    [SERVER_NAME] => 127.0.0.1

    [SERVER_SOFTWARE] => Apache/2.4.23 (Win32) OpenSSL/1.0.2j mod_fcgid/2.3.9

    [SERVER_SIGNATURE] =>

    [SystemRoot] => C:\windows

    [HTTP_COOKIE] => __guid=96992031.544984287504475970.1533307319545.0046; monitor_count=1

    [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8

    [HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch, br

    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36

    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1

    [HTTP_CACHE_CONTROL] => max-age=0

    [HTTP_CONNECTION] => close

    [HTTP_HOST] => 127.0.0.1

    [FCGI_ROLE] => RESPONDER

    [PHP_SELF] => /source-php/demo10/index.php

    [REQUEST_TIME_FLOAT] => 1536153500.0714

    [REQUEST_TIME] => 1536153500

)

 

 

$_REQUEST

$_REQUEST 用于收集HTML表单通过各种方法提交的数据。

 

默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。

 

案例:demo11

print_r($_REQUEST);

?>

效果图

 

$_POST

PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。

$_GET

PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。

$_FILES

第一个参数是表单的 input name,第二个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。

 

$_FILES["file"]["name"] - 上传文件的名称

$_FILES["file"]["type"] - 上传文件的类型

$_FILES["file"]["size"] - 上传文件的大小,以字节计

$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"] - 由文件上传导致的错误代码

 

案例:demo12

Index.html:

DOCTYPE HTML>

<html>

    <head>

       <meta charset="UTF-8"/>

       <title>

       title>

    head>

    <body>

       <form action="demo.php?name=zhangsan" method="post" enctype="multipart/form-data">

           <input type="hidden" name="id" value="3" />

           <input type="hidden" name="sex" value="female" />

           <input type="file" name="file"/>

           <input type="submit" value="提交"/>

        form>

    body>

html>

 

demo.php:

echo '$_REQUEST:';

print_r($_REQUEST);

echo '$_POST:';

print_r($_POST);

echo '$_GET:';

print_r($_GET);

echo '$_FILES:';

print_r($_FILES);

?>

效果图

PHP全站开发工程师-第04章 PHP基础语法_第4张图片

 

 

 

上传限制并且保存被上传的文件

 

上面的实例在服务器的 PHP 临时文件夹中创建了一个被上传文件的临时副本。

这个临时的副本文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

实例:demo13

index.html

DOCTYPE HTML>

<html>

    <head>

       <meta charset="UTF-8"/>

       <title>

       title>

    head>

    <body>

       <form action="demo.php?name=zhangsan" method="post" enctype="multipart/form-data">

           <input type="hidden" name="id" value="3" />

           <input type="hidden" name="sex" value="female" />

           <input type="file" name="file"/>

           <input type="submit" value="提交"/>

       form>

    body>

html>

 

 

demo.php

if($_FILES){

    // 允许上传的图片后缀

    $allowedExts = array("gif", "jpeg", "jpg", "png");

    $temp = explode(".", $_FILES["file"]["name"]);

    $extension = strtolower(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"] . "
"
;

        }

        else{

            echo "上传文件名: " . $_FILES["file"]["name"] . "
"
;

            echo "扩展名: " . $extension . "
"
;

            echo "文件类型: " . $_FILES["file"]["type"] . "
"
;

            echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB
"
;

            echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "
"
;

           

            // 判断当期目录下的 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 "非法的文件格式";

    }

}

?>

 

效果图

PHP全站开发工程师-第04章 PHP基础语法_第5张图片

     

 

上面的脚本检测了文件是否已存在,如果不存在,则把文件拷贝到名为 "upload" 的目录下。

 

$_SESSION

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

 

您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

 

PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。

 

Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

 

开始 PHP Session

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。

注释:session_start() 函数必须位于 标签之前:

 

php session_start(); ?>

 

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。

 

存储 Session 变量

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:

 

案例:demo14

session_start();

// 存储 session 数据

$_SESSION['views'] = $_SESSION['views']+1;

?>

<html>

         <head>

                   <meta charset="utf-8">

         head>

         <body>

                  

                            // 检索 session 数据

                            echo "浏览量:". $_SESSION['views'];

                   ?>

         body>

html>

效果图

输出:

浏览量:1

 

 

在下面的实例中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则创建 "views" 变量,并把它设置为 1:

 

案例:demo15

session_start();

if(isset($_SESSION['views'])){

$_SESSION['views']=$_SESSION['views']+1;}

else{

$_SESSION['views']=1;

}

echo "浏览量:". $_SESSION['views'];

?>

效果图

 

销毁 Session

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

 

案例:demo16

session_id('new1234678');

session_start();

if (isset($_SESSION['views'])) {

         //删除id=new1234678sessionviews

         unset($_SESSION['views']);

}

//删除id=new1234678session中的全部

session_destroy();

?>

 

 

string session_id ([ string $id ] )

获取/设置 当前会话 ID,必须在调用 session_start() 函数之前

string session_cache_limiter ([ string $cache_limiter ] )

读取/设置缓存限制器,必须在调用 session_start() 函数之前。

nocache:不缓存,但公共变量可以缓存

public:允许客户端或代理服务器缓存内容

private:允许客户端缓存, 但是不允许代理服务器缓存内容,受缓存时间限制

int session_cache_expire ([ string $new_cache_expire ] )

返回 session.cache_expire 的设定值,必须在调用 session_start() 函数之前,仅在 session.cache_limiter 的设置值 不是 nocache 的时候使用

bool session_start ([ array $options = array() ] )

创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。

int session_status ( void )

返回当前会话状态

1、PHP_SESSION_DISABLED 会话是被禁用的。

2、PHP_SESSION_NONE 会话是启用的,但不存在当前会话。

3、PHP_SESSION_ACTIVE 会话是启用的,而且存在当前会话。

bool session_destroy ( void )

销毁当前会话中的全部数据

 

$_COOKIE

cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

创建 Cookie?

setcookie() 函数用于设置 cookie。

或者

$_COOKIE['name'] = 'zhangsan';

 

注释:setcookie() 函数必须位于 标签之前。

 

语法

setcookie(name, value, expire, path, domain);

 

案例:demo17

setcookie("user", "zhangsan", time()+3600);

$_COOKIE['password'] = '123456789';

echo $_COOKIE['user'];

echo $_COOKIE['password'];

?>

效果图

 

 

注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)

 

 

删除 Cookie?

当删除 cookie 时,您应当使过期日期变更为过去的时间点。

 

案例:demo18

//删除cookie,设置时间为过去的时间

setcookie("user", "", time()-3600);

$_COOKIE['password'] = '123456';

//删除password

unset($_COOKIE['password']);

 

echo $_COOKIE['user'];

echo $_COOKIE['password'];

?>

效果图

 

 

PHP常量

  1. 常量是一个简单值的标识符。该值在脚本中不能改变。
  2. 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
  3. 常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

 

注意: 常量在整个脚本中都可以使用。

 

设置常量,使用 define() 函数

 

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

 

三个参数:

 

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

 

实例:demo19

define("TEST", "欢迎访问");

 

function myTest() {

    echo TEST;

}

 

myTest();

?>

效果图

输出:欢迎访问

 

 

魔术常量

__LINE__

文件中的当前行号。

 

echo '这是第 " ' . __LINE__ . ' " '; ?>

 

以上实例输出结果为:

这是第 2

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:

 

echo '该文件位于 " ' . __FILE__ . ' " '; ?>

 

以上实例输出结果为:

该文件位于 E:\wamp\www\test\index.php

__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

 

echo '该文件位于 " ' . __DIR__ . ' " '; ?>

 

以上实例输出结果为:

该文件位于 E:\wamp\www\test

 

__FUNCTION__

函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

 

function test() { echo '函数名为:' . __FUNCTION__ ; } test(); ?>

以上实例输出结果为:

函数名为:test

 

__CLASS__

类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

 

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

 

class test {

 function _print() {

 echo '类名为:' . __CLASS__ . "
";

 echo '函数名为:' . __FUNCTION__ ;

 }

}

$t = new test(); $t->_print();

?>

以上实例输出结果为:

类名为:test函数名为:_print

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

 

案例:demo20

class Base {

         public function sayHello() {

                   echo 'Hello ';

         }

}

 

trait SayWorld {

         public function sayHello() {

                   parent::sayHello();

                   echo 'World';

                   echo '来自'.__TRAIT__;

         }

}

 

class MyHelloWorld extends Base {

          use SayWorld;

}

 

$o = new MyHelloWorld(); $o->sayHello();

?>

效果图

 

__METHOD__

类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

实例:

function test() { echo '函数名为:' . __METHOD__ ; } test(); ?>

以上实例输出结果为:

函数名为:test

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

namespace MyProject; echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject" ?>

 

以上实例输出结果为:

 

命名空间为:"MyProject"

 

PHP运算符

  1. 算术运算符

运算符

名称

描述

实例

结果

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
10 % 8
10 % 2

1
2
0

- x

取反

x 取反

-2

-2

a . b

并置

连接两个字符串

"Hi" . "Ha"

HiHa

  1. 赋值运算符

运算符

等同于

描述

x = y

x = y

左操作数被设置为右侧表达式的值

x += y

x = x + y

x -= y

x = x - y

x *= y

x = x * y

x /= y

x = x / y

x %= y

x = x % y

模(除法的余数)

a .= b

a = a . b

连接两个字符串

  1. 递增/递减运算符

运算符

名称

描述

++ x

预递增

x 1,然后返回 x

x ++

后递增

返回 x,然后 x 1

-- x

预递减

x 1,然后返回 x

x --

后递减

返回 x,然后 x 1

  1. 比较运算符

运算符

名称

描述

实例

x == y

等于

如果 x 等于 y,则返回 true

5==8 返回 false

x === y

绝对等于

如果 x 等于 y,且它们类型相同,则返回 true

5==="5" 返回 false

x != y

不等于

如果 x 不等于 y,则返回 true

5!=8 返回 true

x <> y

不等于

如果 x 不等于 y,则返回 true

5<>8 返回 true

x !== y

绝对不等于

如果 x 不等于 y,或它们类型不相同,则返回 true

5!=="5" 返回 true

x > y

大于

如果 x 大于 y,则返回 true

5>8 返回 false

x < y

小于

如果 x 小于 y,则返回 true

5<8 返回 true

x >= y

大于等于

如果 x 大于或者等于 y,则返回 true

5>=8 返回 false

x <= y

小于等于

如果 x 小于或者等于 y,则返回 true

5<=8 返回 true

  1. 逻辑运算符

运算符

名称

描述

实例

x and y

如果 x y 都为 true,则返回 true

x=6
y=3
 
(x < 10 and y > 1) 返回 true

x or y

如果 x y 至少有一个为 true,则返回 true

x=6
y=3
 
(x==6 or y==5) 返回 true

x xor y

异或

如果 x y 有且仅有一个为 true,则返回 true

x=6
y=3
 
(x==6 xor y==3) 返回 false

x && y

如果 x y 都为 true,则返回 true

x=6
y=3
(x < 10 && y > 1)
返回 true

x || y

如果 x y 至少有一个为 true,则返回 true

x=6
y=3
(x==5 || y==5)
返回 false

! x

如果 x 不为 true,则返回 true

x=6
y=3
!(x==y)
返回 true

  1. 数组运算符

运算符

名称

描述

x + y

集合

x y 的集合

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

  1. 三元运算符

另一个条件运算符是"?:"(或三元)运算符 。

 

语法格式:

 

(expr1) ? (expr2) : (expr3)

 

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

 

  1. 运算符优先级

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

 

说明:左 = 从左到右,右 = 从右到左。

结合方向

运算符

附加信息

clone new

clone new

[

array()

++ — ~ (int) (float) (string) (array) (object) (bool) @

类型和递增/递减

instanceof

类型

!

逻辑运算符

* / %

算术运算符

+ – .

算术运算符和字符串运算符

<< >>

位运算符

== != === !== <>

比较运算符

&

位运算符和引用

^

位运算符

|

位运算符

&&

逻辑运算符

||

逻辑运算符

? :

三元运算符

= += -= *= /= .= %= &= |= ^= <<= >>= =>

赋值运算符

and

逻辑运算符

xor

逻辑运算符

or

逻辑运算符

,

多处用到

PHP条件语句

在 PHP 中,提供了下列条件语句:

 

  • if 语句 - 在条件成立时执行代码
  • if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
  • switch 语句 - 在若干条件之一成立时执行一个代码块

 

  1. if 语句:

if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

 

实例:demo21

date_default_timezone_set('PRC');

$t=date("H");

if ($t<"10")

{

    echo "早上好!";

}

elseif ($t<"20")

{

    echo "中午好!";

}

else

{

    echo "晚上好";

}

?>

效果图

  1. Switch语句

switch (variable) {

       case 'value':

             

              break;

      

       default:

             

              break;

}

 

实例:demo22

$favcolor="red";

switch ($favcolor)

{

case "red":

    echo "你喜欢的颜色是红色!";

    break;

case "blue":

    echo "你喜欢的颜色是蓝色!";

    break;

case "green":

    echo "你喜欢的颜色是绿色!";

    break;

default:

    echo "你喜欢的颜色不是 , , 或绿色!";

}

?>

效果图

 

PHP循环语句

  1. while 循环

while 循环将重复执行代码块,直到指定的条件不成立。

 

while (条件){

    要执行的代码;

}

 

  1. do...while 语句

do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

 

do{

    要执行的代码;

}while (条件);

 

  1. for 循环

for 循环用于您预先知道脚本需要运行的次数的情况。

 

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

    要执行的代码;

}

 

参数:

  • 初始值主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
  • 条件循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
  • 增量主要用于递增计数器(但可以是任何在每轮循环结束被执行的代码)。

 

注释:上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。

 

 

  1. foreach 循环

foreach 循环用于遍历数组。

 

foreach ($array as $key => $value){

    要执行代码;

}

 

每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

 

[作业实验]

  1. 制作9*9乘法表

PHP全站开发工程师-第04章 PHP基础语法_第6张图片

  1. 数组排序(直接插入排序、冒泡排序、快速排序)

有如下数组,将所有数据从小到大排序

var $nums = [12, 55, 4, 65,178,215,236,2,48,69,78,356,4];

 

 

你可能感兴趣的:(PHP,前端)