菜鸟教程-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 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 中的字符串变量 字符串变量用于包含有字符的值。 在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。 在下面的实例中,我们创建一个名为 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 算术运算符 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 减 1PHP 比较运算符 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 语句 - 在条件成立时执行代码 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 $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=43foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement 第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。数组中的元素可以按字母或数字顺序进行降序或升序排列。
在本章中,我们将一一介绍下列 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 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。
PHP 超级全局变量 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 PHP 超级全局变量列表: $GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSIONPHP $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 中,提供了下列循环语句: 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 中,提供了超过 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 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 例如 __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" ?>