第二阶段(后端) 25天 144学时
第04章 PHP基础语法(12)
PHP 简介
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。
PHP 输出
PHP中有四种输出方法:
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
PHP 变量
与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
PHP 没有声明变量的命令。变量在您第一次赋值给它的时候被创建:
$txt="Hello world!"; $x=5; $y=10.5; ?>
不必向 PHP 声明该变量的数据类型。
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
四种基本数据类型
两种复合数据类型
一种特殊
整型
整数是一个没有小数的数字。
整数规则:
案例: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 值表示变量没有值。
实例:demo06
$x="Hello world!";
$x=null;
var_dump($x);
?>
效果图
输出:NULL
变量的作用域是脚本中变量可被引用/使用的部分。
PHP 有四种不同的变量作用域:
注意: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中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
案例:demo08
$x = 5;//全局变量不能在方法内部直接使用
print_r($GLOBALS);//输出数组
?>
效果图
$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);
?>
效果图
$_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 临时文件夹中创建了一个被上传文件的临时副本。
这个临时的副本文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
实例: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 "非法的文件格式";
}
}
?>
效果图
上面的脚本检测了文件是否已存在,如果不存在,则把文件拷贝到名为 "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=new1234678的session中views
unset($_SESSION['views']);
}
//删除id=new1234678的session中的全部
session_destroy();
?>
string session_id ([ string |
获取/设置 当前会话 ID,必须在调用 session_start() 函数之前 |
string session_cache_limiter ([ string |
读取/设置缓存限制器,必须在调用 session_start() 函数之前。 nocache:不缓存,但公共变量可以缓存 public:允许客户端或代理服务器缓存内容 private:允许客户端缓存, 但是不允许代理服务器缓存内容,受缓存时间限制 |
int session_cache_expire ([ string |
返回 session.cache_expire 的设定值,必须在调用 session_start() 函数之前,仅在 session.cache_limiter 的设置值 不是 nocache 的时候使用 |
bool session_start ([ 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常量
注意: 常量在整个脚本中都可以使用。
设置常量,使用 define() 函数
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
三个参数:
实例: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运算符
运算符 |
名称 |
描述 |
实例 |
结果 |
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 |
-2 |
a . b |
并置 |
连接两个字符串 |
"Hi" . "Ha" |
HiHa |
运算符 |
等同于 |
描述 |
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 |
连接两个字符串 |
运算符 |
名称 |
描述 |
++ x |
预递增 |
x 加 1,然后返回 x |
x ++ |
后递增 |
返回 x,然后 x 加 1 |
-- x |
预递减 |
x 减 1,然后返回 x |
x -- |
后递减 |
返回 x,然后 x 减 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 |
运算符 |
名称 |
描述 |
实例 |
x and y |
与 |
如果 x 和 y 都为 true,则返回 true |
x=6 |
x or y |
或 |
如果 x 和 y 至少有一个为 true,则返回 true |
x=6 |
x xor y |
异或 |
如果 x 和 y 有且仅有一个为 true,则返回 true |
x=6 |
x && y |
与 |
如果 x 和 y 都为 true,则返回 true |
x=6 |
x || y |
或 |
如果 x 和 y 至少有一个为 true,则返回 true |
x=6 |
! x |
非 |
如果 x 不为 true,则返回 true |
x=6 |
运算符 |
名称 |
描述 |
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 |
另一个条件运算符是"?:"(或三元)运算符 。
语法格式:
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 |
运算符 |
附加信息 |
无 |
clone new |
clone 和 new |
左 |
[ |
array() |
右 |
++ — ~ (int) (float) (string) (array) (object) (bool) @ |
类型和递增/递减 |
无 |
instanceof |
类型 |
右 |
! |
逻辑运算符 |
左 |
* / % |
算术运算符 |
左 |
+ – . |
算术运算符和字符串运算符 |
左 |
<< >> |
位运算符 |
无 |
== != === !== <> |
比较运算符 |
左 |
& |
位运算符和引用 |
左 |
^ |
位运算符 |
左 |
| |
位运算符 |
左 |
&& |
逻辑运算符 |
左 |
|| |
逻辑运算符 |
左 |
? : |
三元运算符 |
右 |
= += -= *= /= .= %= &= |= ^= <<= >>= => |
赋值运算符 |
左 |
and |
逻辑运算符 |
左 |
xor |
逻辑运算符 |
左 |
or |
逻辑运算符 |
左 |
, |
多处用到 |
PHP条件语句
在 PHP 中,提供了下列条件语句:
if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
实例:demo21
date_default_timezone_set('PRC');
$t=date("H");
if ($t<"10")
{
echo "早上好!";
}
elseif ($t<"20")
{
echo "中午好!";
}
else
{
echo "晚上好";
}
?>
效果图
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循环语句
while 循环将重复执行代码块,直到指定的条件不成立。
while (条件){
要执行的代码;
}
do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
do{
要执行的代码;
}while (条件);
for 循环用于您预先知道脚本需要运行的次数的情况。
for (初始值; 条件; 增量){
要执行的代码;
}
参数:
注释:上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
foreach 循环用于遍历数组。
foreach ($array as $key => $value){
要执行代码;
}
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
有如下数组,将所有数据从小到大排序
var $nums = [12, 55, 4, 65,178,215,236,2,48,69,78,356,4];