PHP语法(二)
顺序语句
所谓顺序结构就是自上而下一条一条执行,为什么是一条一条的,因为存储设备物理上是串行的,存储的指令也是一个一个摆放的。
它的执行顺序自上而下,一次执行。
<?php
$a=1;
$b=0;
$c=$a;
$a=$b;
$b=$c;
echo $a;
echo "\n";
echo $b;
?>
条件语句
条件语句用于基于不同条件执行不同的动作
在 PHP 中,我们可以使用以下条件语句:
- if 语句- 如果指定条件为真,则执行代码
- if...else 语句- 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
- if...elseif....else 语句- 根据两个以上的条件执行不同的代码块
- switch 语句 - 选择多个代码块之一来执行
if语句
if 语句用于在指定条件为 true 时执行代码。
if (条件) {
当条件为 true 时执行的代码;
}
if-else语句
if....else 语句在条件为 true 时执行代码,在条件为 false 时执行另一段代码。
if (条件) {
条件为 true 时执行的代码;
} else {
条件为 false 时执行的代码;
}
if....elseif....if语句
if....elseif...else 语句来根据两个以上的条件执行不同的代码。
if (条件) {
条件为 true 时执行的代码;
} elseif (condition) {
在不符合前者条件的情况下,该条件为 true 时执行的代码;
} else {
在前两者条件都不符合的情况下,该条件为 false 时执行的代码;
}
<?php
$t=25;
if ($t<10) {
echo "你好";
} elseif ($t<20) {
echo "你能行";
} else {
echo "加油";
}
?>
//$t=5 ,输出 你好
//$t=15 ,输出 你能行
//$t=25 ,输出 加油
Switch语句
switch 语句用于基于不同条件执行不同动作。
switch (expression)
{
case label1:
expression = label1 时执行的代码 ;
break;
case label2:
expression = label2 时执行的代码 ;
break;
default:
表达式的值不等于 label1 及 label2 时执行的代码;
}
工作原理:
- 对表达式(通常是变量)进行一次计算
- 把表达式的值与结构中 case 的值进行比较
- 如果存在匹配,则执行与 case 关联的代码
- 代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
- 如果没有 case 为真,则使用 default 语句.
循环语句
在 PHP 中,我们有以下循环语句:
- while- 只要指定条件为真,则循环代码块
- do...while- 先执行一次代码块,然后只要指定条件为真则重复循环
- for- 循环代码块指定次数
- foreach - 遍历数组中的每个元素并循环代码块
while循环语句
while 循环在指定条件为 true 时执行代码块。
while (条件为真) {
要执行的代码;
}
<?php
$x=1;
while($x<=5) {
echo "这个数字是:$x <br>";
$x++;
}
?>
do...while 循环语句
do {
要执行的代码;
} while (条件为真);
<?php
$x=1;
do {
echo "这个数字是:$x <br>";
$x++;
} while ($x<=5);
?>
do while语句,会在先执行行循环语句内的语句后,再次进行条件判断。
这意味着,该循环不论是否满足条件都会执行一次。
<?php
$x=6;
do {
echo "这个数字是:$x <br>";
$x++;
} while ($x<=5);
?>
for循环语句
for 循环执行代码块指定的次数。
<?php
for($x=0;$x<=10;$x++){
echo "数字是:$x<br>";
}
foreach语句
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
foreach ($array as $value) {
code to be executed;
}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
函数
用户定义函数
- 除了内建的 PHP 函数,我们可以创建我们自己的函数。
- 函数是可以在程序中重复使用的语句块。
- 页面加载时函数不会立即执行。
- 函数只有在被调用时才会执行。
创建函数
function functionName() {
被执行的代码;
}
函数名能够以字母或下划线开头(而非数字)。
函数名对大小写不敏感。
<?php
function say() {
echo "nihao";
}
say(); // nihao
?>
函数参数
- 可以通过参数向函数传递信息。参数类似变量。
- 参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。
- 如果设置了默认参数,在没有传入参数时,会自动调用默认值。
function functionName( 参数1,参数2,.......) {
被执行的代码;
}
<?php
function say($name) {
echo "nihao,".$name;
}
say("Alice"); // nihao,Alice
?>
函数返回值
<?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}
echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
echo "2 + 4 = " . sum(2,4);
?>
数组
数组是特殊的变量,数组能够在单独的变量名中存储一个或多个值。
创建数组
array()函数用于创建数组。
索引数组
<?php
$names=array("Alice","Bob");
echo "you are".$names[0]."he is".$names[1];
?>
count() - 函数获得数组的长度
count()函数用于返回数组的长度。
<?php
$names=array("Alice","Bob");
echo cout($names);
?>
遍历索引数组
借助for循环,遍历输出索引数组的所有值。
<?php
$names=array("Alice","Bob");
$length=count($names);
for($i=0;$i<$length;$i++){
echo "name:".$names[$i];
echo "\n";
}
?>
关联数组
关联数组是使用您分配给数组的指定键的数组。
<?php
$names=array("He"=>"BOb","Her"=>"Alice");
echo "He is ".$names['He'];
?>
遍历关联数组
借用foreach循环语句,遍历并输出关联数组的所有值。
<?php
$names=array("He"=>"BOb","Her"=>"Alice");
foreach($names as $x=>$x_value){
echo "Key=".$x.",Value=".$x_value;
echo "\n";
}
?>
数组排序
数组中的元素能够以字母或数字顺序进行升序或降序排序。
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
sort()-对数组进行升序排序
按照数字或者字母顺序进行升序
<?php
$names=array("BOb","Alice");
$length=count($names);
echo "排序前";
echo "\n";
for($i=0;$i<$length;$i++){
echo $names[$i];
echo "\n";
}
sort($names);
echo "排序后";
echo "\n";
for($i=0;$i<$length;$i++){
echo $names[$i];
echo "\n";
}
?>
rsort()- 对数组进行降序排序
<?php
$names=array("BOb","Alice");
$length=count($names);
echo "排序前";
echo "\n";
for($i=0;$i<$length;$i++){
echo $names[$i];
echo "\n";
}
rsort($names);
echo "排序后";
echo "\n";
for($i=0;$i<$length;$i++){
echo $names[$i];
echo "\n";
}
?>
asort()-根据值对数组进行升序排序
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
asort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
arsort()- 根据值对数组进行降序排序
ksort() -根据键对数组进行升序排序
<?php
$age=array("Bill"=>"28","Steve"=>"66","Elon"=>"47");
ksort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "\n";
}
?>
krsort() -根据键对数组进行降序排序
<?php
$age=array("Bill"=>"28","Steve"=>"66","Elon"=>"47");
krsort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "\n";
}
?>
超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。
$GLOBALS — 引用全局作用域中可用的全部变量
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。
变量的名字就是数组的键。
<?php
$x = 30;
$y = 65;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>// 95
$_SERVER
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
$_SERVER 是一个包含诸如头部(headers)、路径(paths)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。
超级全局变量,在所有作用域中始终可用的内置变量。
在函数或方法中您不需要使用 global $_SERVER; 访问它,就如同使用 $HTTP_SERVER_VARS 一样。
$HTTP_SERVER_VARS 包含着同样的信息,但是不是一个自动全局变量。(注意: $HTTP_SERVER_VARS 和 $_SERVER 是不同的变量,PHP 处理它们的方式不同。)
(在 PHP 4.1.0 及以后版本使用。之前的版本,使用$HTTP_SERVER_VARS。)
$_SERVER['PHP_SELF'] //返回当前执行脚本的文件名。
$_SERVER['SERVER_NAME']
//返回当前运行脚本所在的服务器的主机名(比如 www.w3schools.cn)。
$_SERVER['SCRIPT_FILENAME'] //返回当前执行脚本的绝对路径。
$_SERVER['SCRIPT_URI'] //返回当前页面的 URI。
$_SERVER['SCRIPT_NAME'] //返回当前脚本的路径。
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
https://www.w3school.com.cn/php/php_superglobals.asp
$_REQUEST
PHP $_REQUEST 用于收集 HTML 表单提交的数据。
<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>
$_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>
<html>
<body>
<?php
echo "在 " . $_GET['web'] . " 学习 " . $_GET['subject'];
?>
</body>
</html>