转载-PHP基础(中)-类型比较,常量,字符串,运算符,选择与循环语句,数组及其排序,函数,魔术变量

本文详细介绍了PHP的基础知识,包括类型比较如松散和严格比较,常量的定义和使用,字符串变量的创建与处理,各种运算符的运用,以及条件语句如if...else和switch。此外,还讲解了数组的创建、排序、遍历,以及超级全局变量和函数的概念。通过实例代码展示了PHP编程中的常见操作。

参考、引用与传送门:

菜鸟教程-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() - 根据数组的,对数组进行升序排列
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); ksort($age); print_r($age);//输出:Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 ) ?>
  • 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"
?>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值