PHP 是一门类型松散的语言
在上面的例子中,请注意我们不必告知 PHP 变量的数据类型。
PHP 根据它的值,自动把变量转换为正确的数据类型。
在诸如 C 和 C++ 以及 Java 之类的语言中,程序员必须在使用变量之前声明它的名称和类型。
PHP 变量作用域
在 PHP 中,可以在脚本的任意位置对变量进行声明。
变量的作用域指的是变量能够被引用/使用的那部分脚本。
PHP 有三种不同的变量作用域:
- local(局部)
- global(全局)
- static(静态)
Local 和 Global 作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问
PHP echo 和 print 语句
echo 和 print 之间的差异:
- echo - 能够输出一个以上的字符串
- print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值。
PHP 对象
对象是存储数据和有关如何处理数据的信息的数据类型。
在 PHP 中,必须明确地声明对象。
首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。
然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:
实例
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
PHP NULL 值
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。
NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
可以通过把值设置为 NULL,将变量清空:
实例
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
PHP 字符串函数
常量类似变量,但是常量一旦被定义就无法更改或撤销定义。
PHP 常量
常量是单个值的标识符(名称)。在脚本中无法改变该值。
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
注释:与变量不同,常量贯穿整个脚本是自动全局的。
设置 PHP 常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:
- 首个参数定义常量的名称
- 第二个参数定义常量的值
- 可选的第三个参数规定常量名是否对大小写敏感。默认是 false。
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>
PHP 算数运算符
运算符
|
名称
|
例子
|
结果
|
+
|
加法
|
$x + $y
|
$x 与 $y 求和
|
-
|
减法
|
$x - $y
|
$x 与 $y 的差数
|
*
|
乘法
|
$x * $y
|
$x 与 $y 的乘积
|
/
|
除法
|
$x / $y
|
$x 与 $y 的商数
|
%
|
模数
|
$x % $y
|
$x 除 $y 的余数
|
下例展示了使用不同算数运算符的不同结果:
实例
<?php
$x=10;
$y=6;
echo ($x + $y); // 输出 16
echo ($x - $y); // 输出 4
echo ($x * $y); // 输出 60
echo ($x / $y); // 输出 1.6666666666667
echo ($x % $y); // 输出 4
?>
PHP 赋值运算符用于向变量写值。
PHP 中基础的赋值运算符是 "="。这意味着右侧赋值表达式会为左侧运算数设置值。
赋值
|
等同于
|
描述
|
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
|
模数
|
PHP 字符串运算符
运算符
|
名称
|
例子
|
结果
|
.
|
串接
|
$txt1 = "Hello" $txt2 = $txt1 . " world!"
|
现在 $txt2 包含 "Hello world!"
|
.=
|
串接赋值
|
$txt1 = "Hello" $txt1 .= " world!"
|
现在 $txt1 包含 "Hello world!"
|
PHP 递增/递减运算符
运算符
|
名称
|
描述
|
++$x
|
前递增
|
$x 加一递增,然后返回 $x
|
$x++
|
后递增
|
返回 $x,然后 $x 加一递增
|
--$x
|
前递减
|
$x 减一递减,然后返回 $x
|
$x--
|
后递减
|
返回 $x,然后 $x 减一递减
|
PHP 比较运算符
PHP 比较运算符用于比较两个值(数字或字符串):
运算符
|
名称
|
例子
|
结果
|
==
|
等于
|
$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。
|
>
|
大于
|
$x > $y
|
如果 $x 大于 $y,则返回 true。
|
<
|
大于
|
$x < $y
|
如果 $x 小于 $y,则返回 true。
|
>=
|
大于或等于
|
$x >= $y
|
如果 $x 大于或者等于 $y,则返回 true.
|
<=
|
小于或等于
|
$x <= $y
|
如果 $x 小于或者等于 $y,则返回 true。
|
PHP 逻辑运算符
运算符
|
名称
|
例子
|
结果
|
and
|
与
|
$x and $y
|
如果 $x 和 $y 都为 true,则返回 true。
|
or
|
或
|
$x or $y
|
如果 $x 和 $y 至少有一个为 true,则返回 true。
|
xor
|
异或
|
$x xor $y
|
如果 $x 和 $y 有且仅有一个为 true,则返回 true。
|
&&
|
与
|
$x && $y
|
如果 $x 和 $y 都为 true,则返回 true。
|
||
|
或
|
$x || $y
|
如果 $x 和 $y 至少有一个为 true,则返回 true。
|
!
|
非
|
!$x
|
如果 $x 不为 true,则返回 true。
|
PHP 数组运算符
PHP 数组运算符用于比较数组:
运算符
|
名称
|
例子
|
结果
|
+
|
联合
|
$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。
|
下例展示了使用不同数组运算符的不同结果:
PHP 条件语句
在您编写代码时,经常会希望为不同的决定执行不同的动作。您可以在代码中使用条件语句来实现这一点。
在 PHP 中,我们可以使用以下条件语句:
- if 语句 - 如果指定条件为真,则执行代码
- if...else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
- if...elseif....else 语句 - 选择若干段代码块之一来执行
- switch 语句 - 语句多个代码块之一来执行
Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。
语法
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
工作原理:
- 对表达式(通常是变量)进行一次计算
- 把表达式的值与结构中 case 的值进行比较
- 如果存在匹配,则执行与 case 关联的代码
- 代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
- 如果没有 case 为真,则使用 default 语句
PHP 循环
在您编写代码时,经常需要反复运行同一代码块。我们可以使用循环来执行这样的任务,而不是在脚本中添加若干几乎相等的代码行。
在 PHP 中,我们有以下循环语句:
- while - 只要指定条件为真,则循环代码块
- do...while - 先执行一次代码块,然后只要指定条件为真则重复循环
- for - 循环代码块指定次数
- foreach - 遍历数组中的每个元素并循环代码块
PHP for 循环
如果您已经提前确定脚本运行的次数,可以使用 for 循环。
语法
for (init counter; test counter; increment counter) {
code to be executed;
}
参数:
- init counter:初始化循环计数器的值
- test counter:: 评估每个循环迭代。如果值为 TRUE,继续循环。如果它的值为 FALSE,循环结束。
- increment counter:增加循环计数器的值
下面的例子显示了从 0 到 10 的数字:
PHP foreach 循环
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
语法
foreach ($array as $value) {
code to be executed;
}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
下面的例子演示的循环将输出给定数组($colors)的值:
实例
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。
PHP 用户定义函数
除了内建的 PHP 函数,我们可以创建我们自己的函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
在 PHP 创建用户定义函数
用户定义的函数声明以关单 "function" 开头:
语法
function functionName() {
被执行的代码;
}
注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
提示:函数名应该能够反映函数所执行的任务。
PHP 数组
什么是数组?
数组是特殊的变量,它可以同时保存一个以上的值。
如果您有一个项目列表(例如汽车品牌列表),在单个变量中存储这些品牌名称是这样的:
$cars1="Volvo";
$cars2="BMW";
$cars3="SAAB";
不过,假如您希望对变量进行遍历并找出特定的那个值?或者如果您需要存储 300 个汽车品牌,而不是 3 个呢?
解决方法是创建数组!
数组能够在单一变量名中存储许多值,并且您能够通过引用下标号来访问某个值。
在 PHP 中创建数组
在 PHP 中, array() 函数用于创建数组:
array();
在 PHP 中,有三种数组类型:
- 索引数组 - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
PHP 索引数组
有两种创建索引数组的方法:
索引是自动分配的(索引从 0 开始):
$cars=array("Volvo","BMW","SAAB");
或者也可以手动分配索引:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
下面的例子创建名为 $cars 的索引数组,为其分配三个元素,然后输出包含数组值的一段文本:
实例
<?php
$cars=array("Volvo","BMW","SAAB");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
PHP 关联数组
关联数组是使用您分配给数组的指定键的数组。
有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或者:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
随后可以在脚本中使用指定键:
遍历关联数组
如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样:
实例
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
PHP 数组排序
数组中的元素能够以字母或数字顺序进行升序或降序排序。
PHP - 数组的排序函数
在本节中,我们将学习如下 PHP 数组排序函数:
索引数组
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
关联数组
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
PHP 全局变量 - 超全局变量
超全局变量 在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。
PHP 全局变量 - 超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
本节会介绍一些超全局变量,并会在稍后的章节讲解其他的超全局变量。
$GLOBALS — 引用全局作用域中可用的全部变量
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS:
实例
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
PHP $_SERVER
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
表列出了您能够在 $_SERVER 中访问的最重要的元素:
元素/代码
|
描述
|
$_SERVER['PHP_SELF']
|
返回当前执行脚本的文件名。
|
$_SERVER['GATEWAY_INTERFACE']
|
返回服务器使用的 CGI 规范的版本。
|
$_SERVER['SERVER_ADDR']
|
返回当前运行脚本所在的服务器的 IP 地址。
|
$_SERVER['SERVER_NAME']
|
返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
|
$_SERVER['SERVER_SOFTWARE']
|
返回服务器标识字符串(比如 Apache/2.2.24)。
|
$_SERVER['SERVER_PROTOCOL']
|
返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
|
$_SERVER['REQUEST_METHOD']
|
返回访问页面使用的请求方法(例如 POST)。
|
$_SERVER['REQUEST_TIME']
|
返回请求开始时的时间戳(例如 1577687494)。
|
$_SERVER['QUERY_STRING']
|
返回查询字符串,如果是通过查询字符串访问此页面。
|
$_SERVER['HTTP_ACCEPT']
|
返回来自当前请求的请求头。
|
$_SERVER['HTTP_ACCEPT_CHARSET']
|
返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
|
$_SERVER['HTTP_HOST']
|
返回来自当前请求的 Host 头。
|
$_SERVER['HTTP_REFERER']
|
返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
|
$_SERVER['HTTPS']
|
是否通过安全 HTTP 协议查询脚本。
|
$_SERVER['REMOTE_ADDR']
|
返回浏览当前页面的用户的 IP 地址。
|
$_SERVER['REMOTE_HOST']
|
返回浏览当前页面的用户的主机名。
|
$_SERVER['REMOTE_PORT']
|
返回用户机器上连接到 Web 服务器所使用的端口号。
|
$_SERVER['SCRIPT_FILENAME']
|
返回当前执行脚本的绝对路径。
|
$_SERVER['SERVER_ADMIN']
|
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
|
$_SERVER['SERVER_PORT']
|
Web 服务器使用的端口。默认值为 “80”。
|
$_SERVER['SERVER_SIGNATURE']
|
返回服务器版本和虚拟主机名。
|
$_SERVER['PATH_TRANSLATED']
|
当前脚本所在文件系统(非文档根目录)的基本路径。
|
$_SERVER['SCRIPT_NAME']
|
返回当前脚本的路径。
|
$_SERVER['SCRIPT_URI']
|
返回当前页面的 URI。
|
PHP $_REQUEST
PHP $_REQUEST 用于收集 HTML 表单提交的数据。
下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:
实例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>
PHP $_POST
PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 <form> 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:
实例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
PHP $_GET
PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
$_GET 也可以收集 URL 中的发送的数据。
假设我们有一张页面含有带参数的超链接:
<html>
<body>
<a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>
</body>
</html>
当用户点击链接 "Test $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。
下面的例子是 "test_get.php" 中的代码:
实例
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
</body>
</html>
No comments:
Post a Comment