转载-PHP基础(中)-类型比较,常量,字符串,运算符,选择与循环语句,数组及其排序,函数,魔术变量
参考、引用与传送门:
PHP 类型比较
虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。
松散比较:使用两个等号 == 比较,只比较值,不比较类型。
严格比较:用三个等号 === 比较,除了比较值,也比较类型。
例如,“42” 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 “false” 是一个字符串。
- 实例:
<?php
if(42 == "42") {
echo '1、值相等';
}
echo PHP_EOL; // 换行符
if(42 === "42") {
echo '2、类型相等';
} else {
echo '3、不相等';
}
?>
- 以上实例输出结果为:
1、值相等
3、不相等 - PHP中 比较 0、false、null
<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo PHP_EOL;
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo PHP_EOL;
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo PHP_EOL;
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo PHP_EOL;
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo PHP_EOL;
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo PHP_EOL;
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);
- 输出结果:
0 == false: bool(true)
0 === false: bool(false)
0 == null: bool(true)
0 === null: bool(false)
false == null: bool(true)
false === null: bool(false)
"0" == false: bool(true)
"0" === false: bool(false)
"0" == null: bool(false)
"0" === null: bool(false)
"" == false: bool(true)
"" === false: bool(false)
"" == null: bool(true)
"" === null: bool(false)
更多实例参照:
https://www.runoob.com/php/php-types-comparisons.html
PHP 5 常量
常量是一个简单值的标识符。常量值被定义后,在脚本的其他任何地方都不能被改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符,不然会将常量转换成新的未定义变量使用,会导致报错)。//
<?php
define('LOG','OPEN');//定义常量,常量使用不能添加$
echo $LOG;//运行结果:Notice: Undefined variable: LOG in D:\Program Files\apache-tomcat-7.0.75\webapps\myweb\test.php on line 3
?>
注意: 常量在整个脚本中都可以使用。
- 设置 PHP 常量
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
- 该函数有三个参数:
name:必选参数,常量名称,即标志符。
value:必选参数,常量的值。
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting; // 输出 "greeting",如果define第三个参数为true,那么此处可以输出"欢迎访问 Runoob.com"
?>
- 常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
<?php
define("GREETING", "欢迎访问 Runoob.com");
function myTest() {
echo GREETING;
}
myTest(); // 输出 "欢迎访问 Runoob.com"
?>
PHP 字符串变量
字符串变量用于存储并处理文本。
- PHP 中的字符串变量
字符串变量用于包含有字符的值。
在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。
在下面的实例中,我们创建一个名为 txt 的字符串变量,并赋值为 “Hello world!” 。然后我们输出 txt 变量的值:
<?php
$txt="Hello world!";
echo $txt;
?>
- PHP 并置运算符
在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;//输出:Hello world! What a nice day!
?>
- PHP strlen() 函数
有时知道字符串值的长度是很有用的。
strlen() 函数返回字符串的长度(字节数)。
下面的实例返回字符串 “Hello world!” 的长度:
<?php
echo strlen("Hello world!");//输出12,空格也是一个字符
?>
注:strlen() 常常用在循环和其他函数中,因为那时确定字符串何时结束是很重要的。(例如,在循环中,我们需要在字符串中的最后一个字符之后结束循环。)
- PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
下面的实例在字符串 “Hello world!” 中查找文本 “world”:
<?php
echo strpos("Hello world!","world");//将输出6,不是 7 的原因是,字符串中第一个字符的位置是 0,而不是 1。
?>
PHP 运算符
本章节我们将讨论 PHP 中不同运算符的应用。
在 PHP 中,赋值运算符 = 用于给变量赋值。
在 PHP 中,算术运算符 + 用于把值加在一起。
- PHP 算术运算符
x + y 加 x 和 y 的和
x - y 减 x 和 y 的差
x * y 乘 x 和 y 的积
x / y 除 x 和 y 的商
x % y 模(除法的余数) x 除以 y 的余数 5 % 2
-x 取反 x 取反 -2
a . b 并置 连接两个字符串 “Hi” . “Ha” HiHa
PHP7+ 版本新增整除运算符 intdiv(),该函数返回值为第一个参数除于第二个参数的值并取整(向下取整),使用实例:
<?php
var_dump(intdiv(10, 3));//int(3)
?>
- PHP 赋值运算符
在 PHP 中,基本的赋值运算符是 “=”。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。 - PHP 递增/递减运算符
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
– x 预递减 x 减 1,然后返回 x
x – 后递减 返回 x,然后 x 减 1 - 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 逻辑运算符
x and y 与 如果 x 和 y 都为 true,则返回 true
x or y 或 如果 x 和 y 至少有一个为 true,则返回 true
x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true
x && y 与 如果 x 和 y 都为 true,则返回 true
x || y 或 如果 x 和 y 至少有一个为 true,则返回 true
! x 非 如果 x 不为 true,则返回 true
- 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
- 三元运算符
另一个条件运算符是"?:"(或三元)运算符 。
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
在 PHP7+ 版本多了一个 NULL 合并运算符 ??,实例如下:
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
- 组合比较符(PHP7+)
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:
$c = $a <=> $b;
解析如下:
如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1。
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。
<?php
// 优先级: && > = > and
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true,输出int(3)
$d = $a || $b;
var_dump($d); //这里的 $d 就是 boolean 值 true ,输出bool(true)
PHP If…Else 语句与Switch 语句
条件语句用于根据不同条件执行不同动作。
当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。
在 PHP 中,提供了下列条件语句:
if 语句 - 在条件成立时执行代码
if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
if…elseif…else 语句 - 在若干条件之一成立时执行一个代码块
switch 语句 - 在若干条件之一成立时执行一个代码块
- PHP - if 语句
if 语句用于仅当指定条件成立时执行代码。
语法:
if (条件)
{
条件成立时要执行的代码;
}
- PHP - if…else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if…else 语句。
语法
if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
- PHP - if…elseif…else 语句
在若干条件之一成立时执行一个代码块,请使用 if…elseif…else 语句。.
语法
if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
注:elseif 和 else if 完全同效果,elseif 是 PHP 为 else if 专门做到容错版。更准确更严格到写法为后者: else if
- PHP Switch 语句
switch 语句用于根据多个不同条件执行不同动作。
工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。
<?php
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>
注:switch 语句不遇到 break 将不会自己"拐弯"
PHP 数组
数组能够在单个变量中存储多个值,数组是一个能在单个变量中存储多个值的特殊变量:
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
- 在 PHP 中创建数组
在 PHP 中,array() 函数用于创建数组:
array();
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组 - PHP 数值数组
这里有两种创建数值数组的方法:
自动分配 ID 键(ID 键总是从 0 开始):
$cars=array("Volvo","BMW","Toyota");
人工分配 ID 键:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
- 获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量):
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);//输出3
?>
- 遍历数值数组
遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)//变量前都得加$,作为标记的x变量也不例外
{
echo $cars[$x];
echo "<br>";
}
?>
- PHP 关联数组
关联数组是使用您分配给数组的指定的键的数组。
这里有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
- 实例:
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";//输出Peter is 35 years old.
?>
- 遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
- 输出:
Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43
补充:foreach语法
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
- 第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
PHP 数组排序
数组中的元素可以按字母或数字顺序进行降序或升序排列。
- 在本章中,我们将一一介绍下列 PHP 数组排序函数:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
- sort() - 对数组进行升序排列
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars);//输出:Array ( [0] => BMW [1] => Toyota [2] => Volvo )
?>
注:PHP print_r() 函数
bool print_r ( mixed $expression [, bool $return ] )
参数说明:
$expression: 要打印的变量,如果给出的是 string、integer 或 float 类型变量,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
$return: 可选,如果为 true 则不输出结果,而是将结果赋值给一个变量,false 则直接输出结果。
返回值
$return 如果设为 true 才有返回值,为一个易于理解的字符串信息。
- rsort() - 对数组进行降序排列
<?php
$numbers=array(4,6,2,22,11);
rsort($numbers);//输出:Array ( [0] => 22 [1] => 11 [2] => 6 [3] => 4 [4] => 2 )
?>
- asort() - 根据数组的值,对数组进行升序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
print_r($age); //输出:Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
?>
- ksort() - 根据数组的键,对数组进行升序排列
- arsort() - 根据数组的值,对数组进行降序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
print_r($age);//输出:Array ( [Joe] => 43 [Ben] => 37 [Peter] => 35 )
?>
- krsort() - 根据数组的键,对数组进行降序排列
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age);//输出:Array ( [Peter] => 35 [Joe] => 43 [Ben] => 37 )
?>
PHP 超级全局变量
超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。
- PHP 超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION - PHP $GLOBALS
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z; //输出结果是100.z 是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问。
?>
- PHP $_SERVER
$_SERVER 是一个包含了诸如**头信息(header)、路径(path)、以及脚本位置(script locations)**等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
<?php
echo $_SERVER['PHP_SELF'];//输出/try/demo_source/demo_global_server.php
echo "<br>";
echo $_SERVER['SERVER_NAME'];//输出www.runoob.com
echo "<br>";
echo $_SERVER['HTTP_HOST'];//输出/try/showphp.php?filename=demo_global_server
echo "<br>";
echo $_SERVER['HTTP_REFERER'];//输出:/tr/showphp.php?filename=demo_global_server
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];//输出:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];//输出:/try/demo_source/demo_global_server.php
?>
所有 $_SERVER 变量中的重要元素:
- $_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 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:someone@runoob.com)
- $_SERVER[‘SERVER_PORT’] Web 服务器使用的端口。默认值为 “80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
- $_SERVER[‘SERVER_SIGNATURE’] 包含了服务器版本和虚拟主机名的字符串。
- $_SERVER[‘PATH_TRANSLATED’] 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
- $_SERVER[‘SCRIPT_NAME’] 包含当前脚本的路径。这在页面需要指向自己时非常有用。FILE 常量包含当前脚本(例如包含文件)的完整路径和文件名。
- $_SERVER[‘SCRIPT_URI’] URI 用来指定要访问的页面。例如 “/index.html”。
PHP $_REQUEST
- PHP $_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至<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 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:
<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 form标签的指定该属性:"method=“get”。
$_GET 也可以收集URL中发送的数据。
假定我们有一个包含参数的超链接HTML页面:
<html>
<body>
<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
</body>
</html>
- 当用户点击链接 “Test $GET”, 参数 “subject” 和 “web” 将发送至"test_get.php",你可以在 “test_get.php” 文件中使用 $_GET 变量来获取这些数据。
以下实例显示了 “test_get.php” 文件的代码:
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];//点击超链接会跳转到:Study PHP @ runoob.com
?>
</body>
</html>
PHP 循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
- PHP 循环
在 PHP 中,提供了下列循环语句:
while - 只要指定的条件成立,则循环执行代码块
do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
for - 循环执行代码块指定的次数
foreach - 根据数组中每个元素来循环代码块 - while 循环
while (条件)
{
要执行的代码;
}
- do…while 语句
do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
do
{
要执行的代码;
}
while (条件);
- for 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
语法
for (初始值; 条件; 增量)
{
要执行的代码;
}
注:上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
- foreach 循环
foreach 循环用于遍历数组。
语法
foreach ($array as $value)
{
要执行代码;
}
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
foreach ($array as $key => $value)
{
要执行代码;
}
每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。
PHP 函数
在 PHP 中,提供了超过 1000 个内建的函数。
- PHP 内建函数
如果要查看所有数组函数,请访问参考手册:https://www.runoob.com/php/php-ref-array.html - 创建 PHP 函数
函数是通过调用函数来执行的。
语法
<?php
function functionName()
{
// 要执行的代码
}
?>
PHP 函数准则:
函数的名称应该提示出它的功能
函数名称以字母或下划线开头(不能以数字开头)
- PHP 函数 - 添加参数
为了给函数添加更多的功能,我们可以添加参数,参数类似变量。
参数就在函数名称后面的一个括号内指定。 - PHP 函数 - 返回值
如需让函数返回一个值,请使用 return 语句。
<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);//输出1+16=17
?>
注:
php 也存在可变参数的函数,使用…实现。
function test(...$args) //定义可变参数函数,使用...实现
{
...
}
test("a");//一个参数
test("a","b");//两个参数
test("a","b","c");//三个参数
PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:
__LINE__
文件中的当前行号。
<?php
echo '这是第 " ' . __LINE__ . ' " 行';//输出这是第“2”行
?>
__FILE__
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
自 PHP 4.0.2 起,__FILE__总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
<?php
echo '该文件位于 " ' . __FILE__ . ' " ';//输出:该文件位于 “ E:\wamp\www\test\index.php ”
?>
__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
它等价于dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
<?php
echo '该文件位于 " ' . __DIR__ . ' " ';//输出:该文件位于 “ E:\wamp\www\test ”
?>
__FUNCTION__
仅函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
<?php
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 方法的类的名字。
<?php
class test {
function _print() {
echo '类名为:' . __CLASS__ . "<br>";//输出:类名为:test
echo '函数名为:' . __FUNCTION__ ;//输出:函数名为:_print
}
}
$t = new test();
$t->_print();
?>
__TRAIT__
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。–来源php.net/trait
<?php
class Base {
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello();//输出:Hello World!
?>
__METHOD__
类的方法名,如果是类中的函数,输出类名::方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
<?php
function test() {
echo '函数名为:' . __METHOD__ ;
}
test();//输出test
?>
__NAMESPACE__
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
<?php
namespace MyProject;
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出:命名空间为: "MyProject"
?>
本文详细介绍了PHP的基础知识,包括类型比较如松散和严格比较,常量的定义和使用,字符串变量的创建与处理,各种运算符的运用,以及条件语句如if...else和switch。此外,还讲解了数组的创建、排序、遍历,以及超级全局变量和函数的概念。通过实例代码展示了PHP编程中的常见操作。
3611

被折叠的 条评论
为什么被折叠?



