PHP EOF(heredoc) 使用说明
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
使用概述:
- 1. 必须后接分号,否则编译通不过。
- 2.?EOF?可以用任意其它字符代替,只需保证结束标识与开始标识一致。
- 3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- 5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
实例
<?php
echo?<<<EOF
? ? ? ? <h1>我的第一个标题</h1>
? ? ? ? <p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
?>
注意:
1.以?<<<EOF?开始标记开始,以?EOF?结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
2.开始标记和结束标记相同,比如常用大写的?EOT、EOD、EOF?来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符?.?或?,?来拼接,如下:
实例
<?php
$name="小张";
$a=?<<<EOF
? ? ? ? "abc"$name
? ? ? ? "123"
EOF;
// 结束需要独立一行且前后不能空格
echo?$a;
?>
PHP ?数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
PHP 字符串
一个字符串是一串字符的序列,就像 "Hello world!"。
你可以将任何文本放在单引号和双引号中:
<?php
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>
PHP 整型
整数是一个没有小数的数字。
整数规则:
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
在以下实例中我们将测试不同的数字。
PHP?var_dump()?函数返回变量的数据类型和值:
<?php
$x = 5985;
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>
PHP 浮点型
浮点数是带小数部分的数字,或是指数形式。
在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:
<?php
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
?>
PHP 布尔型
布尔型可以是 TRUE 或 FALSE。
$x=true;
$y=false;
PHP 数组
数组可以在一个变量中存储多个值。
在以下实例中创建了一个数组, 然后使用 PHP var_dump() 函数返回数组的数据类型和值:
<?php
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>
PHP NULL 值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据:
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
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 ?常量
常量值被定义后,在脚本的其他任何地方都不能被改变。
PHP 常量
常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意:?常量在整个脚本中都可以使用。
设置 PHP 常量
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive?:可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
以下实例我们创建一个?区分大小写的常量, 常量值为 "欢迎访问 小张":
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 小张");
echo GREETING; // 输出 "欢迎访问 小张"
echo '<br>';
echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义
?>
以下实例我们创建一个?不区分大小写的常量, 常量值为 "欢迎访问 小张":
<?php
// 不区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com", true);
echo greeting; // 输出 "欢迎访问 Runoob.com"
?>
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。
<?php
define("GREETING", "欢迎访问 小张");
function myTest() {
echo GREETING;
}
myTest(); // 输出 "欢迎访问 小张"
?>
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!");
?>
PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
下面的实例在字符串 "Hello world!" 中查找文本 "world":
<?php
echo strpos("Hello world!","world");
?>
PHP?运算符
在 PHP 中,赋值运算符 = 用于给变量赋值。
在 PHP 中,算术运算符 + 用于把值加在一起。
PHP 算术运算符
运算符 | 名称 | 描述 | 实例 | 结果 |
---|
x + y | 加 | x 和 y 的和 | 2 + 2 | 4 | x - y | 减 | x 和 y 的差 | 5 - 2 | 3 | x * y | 乘 | x 和 y 的积 | 5 * 2 | 10 | x / y | 除 | x 和 y 的商 | 15 / 5 | 3 | x % y | 模(除法的余数) | x 除以 y 的余数 | 5 % 2 10 % 8 10 % 2 | 1 2 0 | - x | 取反 | x 取反 | <?php
$x =2;
echo -$x;
?> | -2 | a . b | 并置 | 连接两个字符串 | "Hi" . "Ha" | HiHa |
以下实例演示了使用不同算术运算符得到的不同结果:
<?php
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo '<br>'; // 换行
echo ($x - $y); // 输出4
echo '<br>'; // 换行
echo ($x * $y); // 输出60
echo '<br>'; // 换行
echo ($x / $y); // 输出1.6666666666667
echo '<br>'; // 换行
echo ($x % $y); // 输出4
echo '<br>'; // 换行
echo -$x;
?>
PHP 赋值运算符
在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。
运算符 等同于 描述
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 模(除法的余数)
a .= b a = a . b 连接两个字符串
以下实例演示了使用不同赋值运算符得到的不同结果:
<?php
$x=10;
echo $x; // 输出10
$y=20;
$y += 100;
echo $y; // 输出120
$z=50;
$z -= 25;
echo $z; // 输出25
$i=5;
$i *= 6;
echo $i; // 输出30
$j=10;
$j /= 5;
echo $j; // 输出2
$k=15;
$k %= 4;
echo $k; // 输出3
?>
以下实例演示了使用不同字符串运算符得到的相同结果:
<?php $a = "Hello"; $b = $a . " world!"; echo $b; // 输出Hello world! $x="Hello"; $x .= " world!"; echo $x; // 输出Hello world! ?>
PHP 递增/递减运算符
运算符 | 名称 | 描述 |
---|
++ x | 预递增 | x 加 1,然后返回 x | x ++ | 后递增 | 返回 x,然后 x 加 1 | -- x | 预递减 | x 减 1,然后返回 x | x -- | 后递减 | 返回 x,然后 x 减 1 |
以下实例演示了使用递增/递减运算符得到的结果:
<?php
$x=10;
echo ++$x; // 输出11
$y=10;
echo $y++; // 输出10
$z=5;
echo --$z; // 输出4
$i=5;
echo $i--; // 输出5
?>
PHP 比较运算符
比较操作符可以让您比较两个值:
运算符 | 名称 | 描述 | 实例 |
---|
x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false | x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5==="5" 返回 false | x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true | x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true | x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!=="5" 返回 true | x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false | x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true | x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false | x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
以下实例演示了使用一些比较运算符得到的不同结果:
<?php
$x=100;
$y="100";
var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x !== $y);
echo "<br>";
$a=50;
$b=90;
var_dump($a > $b);
echo "<br>";
var_dump($a < $b);
?>
PHP 逻辑运算符
运算符 | 名称 | 描述 | 实例 |
---|
x and y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 y=3 (x < 10 and y > 1) 返回 true | x or y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6 y=3 (x==6 or y==5) 返回 true | x xor y | 异或 | 如果 x 和 y 有且仅有一个为 true,则返回 true | x=6 y=3 (x==6 xor y==3) 返回 false | x && y | 与 | 如果 x 和 y 都为 true,则返回 true | x=6 y=3 (x < 10 && y > 1) 返回 true | x || y | 或 | 如果 x 和 y 至少有一个为 true,则返回 true | x=6 y=3 (x==5 || y==5) 返回 false | ! x | 非 | 如果 x 不为 true,则返回 true | x=6 y=3 !(x==y) 返回 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 |
以下实例演示了使用一些数组运算符得到的不同结果:
<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 | 运算符 | 附加信息 |
---|
无 | clone new | clone 和 new | 左 | [ | array() | 右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 | 无 | instanceof | 类型 | 右 | ! | 逻辑运算符 | 左 | * / % | 算术运算符 | 左 | + – . | 算术运算符和字符串运算符 | 左 | << >> | 位运算符 | 无 | == != === !== <> | 比较运算符 | 左 | & | 位运算符和引用 | 左 | ^ | 位运算符 | 左 | | | 位运算符 | 左 | && | 逻辑运算符 | 左 | || | 逻辑运算符 | 左 | ? : | 三元运算符 | 右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 | 左 | and | 逻辑运算符 | 左 | xor | 逻辑运算符 | 左 | or | 逻辑运算符 | 左 | , | 多处用到 |
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。
<?php
// 优先级: && > = > and
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //这里的 $d 就是 boolean 值 true
?>
以上实例输出结果为:
int(3)
bool(true)
括号的使用
我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
<?php
// 括号优先运算
$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
echo "\n";
$e = ($a + $b) * $c; // 使用括号
echo $e;
echo "\n";
?>
以上实例输出结果为:
7
9
PHP?If...Else?语句
条件语句用于根据不同条件执行不同动作。
PHP 条件语句
当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。
在 PHP 中,提供了下列条件语句:
- if 语句?- 在条件成立时执行代码
- if...else 语句?- 在条件成立时执行一块代码,条件不成立时执行另一块代码
- if...elseif....else 语句?- 在若干条件之一成立时执行一个代码块
- switch 语句?- 在若干条件之一成立时执行一个代码块
PHP - if 语句
if 语句用于仅当指定条件成立时执行代码。
语法
if (条件)
{
????条件成立时要执行的代码;
}
如果当前时间小于 20,下面的实例将输出 "Have a good day!":
<?php $t=date("H"); if ($t<"20") { echo "Have a good day!"; } ?>
PHP - if...else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if....else 语句。
语法
if (条件) { 条件成立时执行的代码; } else { 条件不成立时执行的代码; }
如果当前时间小于 20,下面的实例将输出 "Have a good day!",否则输出 "Have a good night!":
<?php
$t=date("H");
if ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>
PHP - if...elseif....else 语句
在若干条件之一成立时执行一个代码块,请使用 if....elseif...else 语句。.
语法
if (条件)
{
????if 条件成立时执行的代码;
}
elseif (条件)
{
????elseif 条件成立时执行的代码;
}
else
{
????条件不成立时执行的代码;
}
如果当前时间小于 10,下面的实例将输出 "Have a good morning!",如果当前时间不小于 10 且小于 20,则输出 "Have a good day!",否则输出 "Have a good night!":
<?php
$t=date("H");
if ($t<"10")
{
echo "Have a good morning!";
}
elseif ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>
PHP?Switch?语句
switch 语句用于根据多个不同条件执行不同动作。
PHP Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 switch 语句。
<?php
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>
工作原理:首先对一个简单的表达式?n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用?break?来阻止代码跳入下一个 case 中继续执行。default?语句用于不存在匹配(即没有 case 为真)时执行。
<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
echo "你喜欢的颜色是红色!";
break;
case "blue":
echo "你喜欢的颜色是蓝色!";
break;
case "green":
echo "你喜欢的颜色是绿色!";
break;
default:
echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>
PHP?数组
数组能够在单个变量中存储多个值:
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
数组是什么?
数组是一个能在单个变量中存储多个值的特殊变量。
如果您有一个项目清单(例如:车名字的清单),将其存储到单个变量中,如下所示:
$cars1="Volvo"; $cars2="BMW"; $cars3="Toyota";
然而,如果您想要遍历数组并找出特定的一个呢?如果数组的项不只 3 个而是 300 个呢?
解决办法是创建一个数组!
数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。
在 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";
下面的实例创建一个名为 $cars 的数值数组,并给数组分配三个元素,然后打印一段包含数组值的文本
<?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?>
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量):
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>
遍历数值数组
遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$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.";
?>
PHP?数组排序
数组中的元素可以按字母或数字顺序进行降序或升序排列。
PHP - 数组排序函数
在本章中,我们将一一介绍下列 PHP 数组排序函数:
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
sort() - 对数组进行升序排列
下面的实例将 $cars 数组中的元素按照字母升序排列:
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
?>
下面的实例将 $numbers 数组中的元素按照数字升序排列:
<?php
$numbers=array(4,6,2,22,11);
sort($numbers);
?>
rsort() - 对数组进行降序排列
下面的实例将 $cars 数组中的元素按照字母降序排列:
<?php
$cars=array("Volvo","BMW","Toyota");
rsort($cars);
?>
下面的实例将 $numbers 数组中的元素按照数字降序排列:
<?php
$numbers=array(4,6,2,22,11);
rsort($numbers);
?>
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 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
以下实例介绍了如何使用超级全局变量 $GLOBALS:
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
以上实例中 z 是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问。
PHP $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
以下实例中展示了如何使用$_SERVER中的元素:
<?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'];
?>
下表列出了所有 $_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 用于收集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 循环 -?While 循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
PHP 循环
在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。
在 PHP 中,提供了下列循环语句:
- while?- 只要指定的条件成立,则循环执行代码块
- do...while?- 首先执行一次代码块,然后在指定的条件成立时重复这个循环
- for?- 循环执行代码块指定的次数
- foreach?- 根据数组中每个元素来循环代码块
while 循环
while 循环将重复执行代码块,直到指定的条件不成立。
语法
while (条件)
{
要执行的代码;
}
实例
下面的实例首先设置变量?i?的值为 1 ($i=1;)。
然后,只要?i?小于或者等于 5,while 循环将继续运行。循环每运行一次,i?就会递增 1:
<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br>";
$i++;
}
?>
</body>
</html>
输出:
The number is 1 The number is 2 The number is 3 The number is 4 The number is 5
do...while 语句
do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
语法
do
{
要执行的代码;
}
while (条件);
实例
下面的实例首先设置变量?i?的值为 1 ($i=1;)。
然后,开始 do...while 循环。循环将变量?i?的值递增 1,然后输出。先检查条件(i?小于或者等于 5),只要?i?小于或者等于 5,循环将继续运行:
<html>
<body>
<?php
$i=1;
do
{
$i++;
echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>
</body>
</html>
输出:
The number is 2 The number is 3 The number is 4 The number is 5 The number is 6
PHP 循环 -?For 循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
for 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
语法
for (初始值; 条件; 增量)
{
要执行的代码;
}
参数:
- 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
- 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
- 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
注释:上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
实例
下面的实例定义一个初始值为 i=1 的循环。只要变量?i?小于或者等于 5,循环将继续运行。循环每运行一次,变量?i?就会递增 1:
实例
<?php for ($i=1; $i<=5; $i++) { echo "数字为 " . $i . PHP_EOL; } ?>
输出:
数字为 1
数字为 2
数字为 3
数字为 4
数字为 5
foreach 循环
foreach 循环用于遍历数组。
语法
foreach ($array as $value)
{
要执行代码;
}
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
foreach ($array as $key => $value)
{
要执行代码;
}
每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。
实例
下面的实例演示了一个输出给定数组的值的循环:
<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
echo $value . PHP_EOL;
}
?>
输出:
Google
Runoob
Taobao
下面的实例演示了一个输出给定数组键与值的循环:
<?php
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
foreach ($x as $key => $value)
{
echo "key 为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>
输出:
key 为 1,对应的 value 为 Google
key 为 2,对应的 value 为 Runoob
key 为 3,对应的 value 为 Taobao
|