PHP中除了foreach循环之外的其它循环和分支(如while,do-while,switch,if-else,for)都和C/C++/Java的语法很类似,就不再记录了。PHP中的foreach循环则不太一样。
PHP中的foreach循环用来遍历数组,语法是:
foreach($数组名 as $迭代临时变量名)
{
//操作迭代临时变量
}
<?php
$a = [
3 => 'lzh',
1 => 'is',
2 => 'so',
0 => 'sb'
];
foreach($a as $value)
{
echo $value,' ';
}
输出:
lzh is so sb
超级全局变量在PHP脚本的全部作用域中都可用,如前面学的用来访问全局变量的$GLOBALS
数组就是一个超级全局变量。
数组$_SERVER
由Web服务器创建,包含服务器的各种信息。
<?php
echo '当前执行脚本的文件名:', $_SERVER['PHP_SELF'];
echo "<br>";
echo '当前运行脚本所在的服务器的主机名:', $_SERVER['SERVER_NAME'];
echo "<br>";
echo '当前请求头中Host项的内容:', $_SERVER['HTTP_HOST'];
echo "<br>";
echo 'Web服务器使用的端口:', $_SERVER['SERVER_PORT'];
echo "<br>";
echo '用户使用的浏览器,操作系统等信息:', $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo '包含当前脚本的路径:', $_SERVER['SCRIPT_NAME'];//在页面需要指向自己时常用
echo "<br>";
echo 'Apache服务器配置文件中的SERVER_ADMIN参数:', $_SERVER['SERVER_ADMIN'];
echo "<br>";
echo '当前请求头中Accept项的内容:', $_SERVER['HTTP_ACCEPT'];
echo "<br>";
echo '访问页面使用的请求方法:', $_SERVER['REQUEST_METHOD'];
echo "<br>";
echo '请求页面时通信协议的名称和版本:', $_SERVER['SERVER_PROTOCOL'];
echo "<br>";
echo '服务器标识字符串:', $_SERVER['SERVER_SOFTWARE'];
echo "<br>";
echo '服务器使用的CGI规范的版本:', $_SERVER['GATEWAY_INTERFACE'];
echo "<br>";
echo '当前运行脚本所在的服务器的IP地址:', $_SERVER['SERVER_ADDR'];
输出:
当前执行脚本的文件名:/lzh/fromPS.php
当前运行脚本所在的服务器的主机名:localhost
当前请求头中Host项的内容:localhost
Web服务器使用的端口:80
用户使用的浏览器,操作系统等信息:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
包含当前脚本的路径:/lzh/fromPS.php
Apache服务器配置文件中的SERVER_ADMIN参数:admin@example.com
当前请求头中Accept项的内容:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
访问页面使用的请求方法:GET
请求页面时通信协议的名称和版本:HTTP/1.1
服务器标识字符串:Apache/2.4.17 (Win64) PHP/7.0.0
服务器使用的CGI规范的版本:CGI/1.1
当前运行脚本所在的服务器的IP地址:::1
命名空间
关键字namespace
用于声明命名空间,所有常量、类、函数默认都在全局命名空间下,全局命名空间相当于没有名字的命名空间。
如果使用了namespace
来声明命名空间,那么命名空间的声明必须在所有代码之前,其前只能有declare
定义文件编码,不能有其它代码。
<?php
//名字为lzhNmSpc的命名空间
namespace lzhNmSpc {
//常量
const LZH = 'lzh is sb';
//类
class sb
{
static function myfun()
{
echo __METHOD__,'执行了';
}
}
//函数
function lzhfun(){
echo __FUNCTION__,'执行了';
}
}
//全局命名空间
namespace {
//调用函数
\lzhNmSpc\lzhfun();
echo "<br>";
//调用类中的方法
\lzhNmSpc\sb::myfun();
}
输出:
lzhNmSpc\lzhfun执行了
lzhNmSpc\sb::myfun执行了
在PHP中,用关键字class
声明一个类,类中的成员变量需要使用关键字var
声明,用关键字function
声明类中的成员方法,用关键字new
建立类的对象,用->
符访问其成员。
<?php
class lzhCls
{
var $a = 123;
function lzhFun()
{
echo __FUNCTION__, '执行了';
}
}
$lzhObj = new lzhCls();
echo $lzhObj->a;//访问成员变量
echo "<br>";
$lzhObj->lzhFun();//调用成员方法
输出:
123
lzhFun执行了
PHP中的构造函数函数名为__construct
,PHP中this的用法是$this->成员名
。
<?php
class lzhCls
{
var $a,$b;
public function __construct($a,$b)
{
$this->a=$a;
$this->b=$b;
}
public function syso(){
echo $this->a;
echo "<br>";
echo $this->b;
}
}
//调用有参的构造函数进行构造
$lzhObj = new lzhCls(1,4);
$lzhObj->syso();
输出:
1
4