php表单和用户输入

PHP 表单和用户输入

PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。

PHP 表单处理

  • 当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。

下面的实例包含了一个 HTML 表单,带有两个输入框和一个提交按钮:

1
2
3
4
5
6
7
8
9
10
11
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html>

当用户填写完上面的表单并点击提交按钮时,表单的数据会被送往名为 “welcome.php” 的 PHP 文件:

  • “welcome.php” 文件如下所示:
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    <body>

    Welcome <?php echo $_POST["fname"]; ?>!<br>
    You are <?php echo $_POST["age"]; ?> years old.

    </body>
    </html>

输出如下所示:
Welcome John!
You are 28 years old.

表单验证

应该在任何可能的时候对用户输入进行验证(通过客户端脚本)。浏览器验证速度更快,并且可以减轻服务器的负载。
如果用户输入需要插入数据库,您应该考虑使用服务器验证。在服务器验证表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。

PHP常量

PHP常量

常量值被定义后,在脚本的其他任何地方都不能被改变。

PHP 常量

  • 常量是一个简单值的标识符。该值在脚本中不能改变。

  • 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

注意: 常量在整个脚本中都可以使用。

设置 PHP 常量

  • 设置常量,使用 define() 函数,函数语法如下:
    define(string constant_name, mixed value, case_insensitive = true)

  • 该函数有三个参数:

    constant_name:必选参数,常量名称,即标志符。
    value:必选参数,常量的值。
    case_insensitive :可选参数,指定是否大小写敏感,设定为 true 表示不,不区分大小写敏感。默认值为false。

  • 以下实例我们创建一个 区分大小写的常量, 常量值为 “欢迎访问Runoob.com”:

1
2
3
4
5
6
7
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting; // 输出 "greeting"
?>
  • 以下实例我们创建一个 不区分大小写的常量, 常量值为 “欢迎访问 Runoob.com”:
    1
    2
    3
    4
    5
    <?php
    // 不区分大小写的常量名
    define("GREETING", "欢迎访问 Runoob.com", true);
    echo greeting; // 输出 "欢迎访问 Runoob.com"
    ?>

常量是全局的

  • 常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。

1
2
3
4
5
6
7
8
9
<?php
define("GREETING", "欢迎访问 Runoob.com");

function myTest() {
echo GREETING;
}

myTest(); // 输出 "欢迎访问 Runoob.com"
?>

php函数

创建PHP函数

  • 函数是通过调用函数来执行的。

function functionName()
{
要执行的代码;
}

  • PHP 函数准则:
    • 函数的名称应该提示出它的功能
    • 函数名称以字母或下划线开头(不能以数字开头)

一个简单的函数,在其被调用时能输出我的名称:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<body>

<?php
function writeName()
{
echo "Kai Jim Refsnes";
}

echo "My name is ";
writeName();
?>

</body>
</html>

输出:My name is Kai Jim Refsnes

PHP 函数 - 添加参数

为了给函数添加更多的功能,我们可以添加参数。参数类似变量。

  • 参数就在函数名称后面有一个括号内指定。

下面的实例将输出不同的名字,但姓是相同的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<body>

<?php
function writeName($fname)
{
echo $fname . " Refsnes.<br>";
}

echo "My name is ";
writeName("Kai Jim");
echo "My sister's name is ";
writeName("Hege");
echo "My brother's name is ";
writeName("Stale");
?>

</body>
</html>

  • 输出:

    My name is Kai Jim Refsnes.
    My sister’s name is Hege Refsnes.
    My brother’s name is Stale Refsnes.

  • 下面的函数有两个参数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <html>
    <body>

    <?php
    function writeName($fname,$punctuation)
    {
    echo $fname . " Refsnes" . $punctuation . "<br>";
    }

    echo "My name is ";
    writeName("Kai Jim",".");
    echo "My sister's name is ";
    writeName("Hege","!");
    echo "My brother's name is ";
    writeName("Ståle","?");
    ?>

    </body>
    </html>
  • 输出:

    My name is Kai Jim Refsnes.
    My sister’s name is Hege Refsnes!
    My brother’s name is Ståle Refsnes?

PHP 函数 - 返回值

如需让函数返回一个值,请使用 return 语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<body>

<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}

echo "1 + 16 = " . add(1,16);
?>

</body>
</html>

输出:1 + 16 = 17

php超级全局变量

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:

1
2
3
4
5
6
7
8
9
10
<?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中的元素:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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’] || querystring(查询字符串),如果有的话,通过它进行页面访问。
$_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” 按钮提交表单数据时, 表单数据将发送至

标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:
1
2
3
4
5
6
7
8
9
10
11
12
<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” 按钮提交表单数据时, 表单数据将发送至

标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:
1
2
3
4
5
6
7
8
9
10
11
12
<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页面:

1
2
3
4
5
6
7
<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” 文件的代码:

1
2
3
4
5
6
7
8
9
<html>
<body>

<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

</body>
</html>

php数组

PHP 数组

数组能够在单个变量中存储多个值:

1
2
3
4
<?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”;

下面的实例创建一个名为 $cars 的数值数组,并给数组分配三个元素,然后打印一段包含数组值的文本:

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

获取数组的长度 - count() 函数

count() 函数用于返回数组的长度(元素的数量):

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>

遍历数值数组

遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:

1
2
3
4
5
6
7
8
9
10
<?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”;

随后可以在脚本中使用指定的键:

1
2
3
4
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

遍历关联数组

遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

1
2
3
4
5
6
7
8
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>

php运算符详解

PHP 运算符

  • 在 PHP 中,赋值运算符 = 用于给变量赋值。
  • 在 PHP 中,算术运算符 + 用于把值加在一起。

PHP 算术运算符

x + y | 加
x - y | 减
x * y | 乘
x / y | 除
x % y | 模(除法的余数)
-x | 取反 x
a . b | 并置

  • PHP7+ 版本新增整除运算符 intdiv(),使用实例:
    1
    2
    3
    <?php
    var_dump(intdiv(10, 3));
    ?>

以上实例会输出:
int(3)

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 || 预递增 || x 加 1,然后返回 x
x ++ || 后递增 || 返回 x,然后 x 加 1
– x || 预递减 || x 减 1,然后返回 x
x – || 后递减 || 返回 x,然后 x 减 1

以下实例演示了使用递增/递减运算符得到的结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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
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

以下实例演示了使用一些数组运算符得到的不同结果:

1
2
3
4
5
6
7
8
9
10
11
<?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);
?>

三元运算符

另一个条件运算符是”?:”(或三元)运算符 。

语法格式

(expr1) ? (expr2) : (expr3)

  • 对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

  • 自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

以下实例中通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET[‘user’],否则返回 nobody:

1
2
3
4
5
6
7
8
9
10
<?php
$test = '菜鸟教程';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;

// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>

菜鸟教程
菜鸟教程

注意:PHP_EOL 是一个换行符,兼容更大平台。

在 PHP7+ 版本多了一个 NULL 合并运算符,实例如下:

1
2
3
4
5
6
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>

组合比较符(PHP7+)

PHP7+ 支持组合比较符,实例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>

PHP字符串变量

PHP 字符串变量

  • 字符串变量用于存储并处理文本。

PHP 中的字符串变量

  • 字符串变量用于包含有字符的值。

在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。

在下面的实例中,我们创建一个名为 txt 的字符串变量,并赋值为 “Hello world!” 。然后我们输出 txt 变量的值:

1
2
3
4
<?php 
$txt="Hello world!";
echo $txt;
?>

PHP 并置运算符

在 PHP 中,只有一个字符串运算符。

并置运算符 (.) 用于把两个字符串值连接起来。

下面的实例演示了如何将两个字符串变量连接在一起:

1
2
3
4
5
<?php 
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>

上面的代码将输出:Hello world! What a nice day!

PHP strlen() 函数

-strlen() 函数返回字符串的长度(字符数)。

下面的实例返回字符串 “Hello world!” 的长度:

1
2
3
<?php 
echo strlen("Hello world!");
?>

上面的代码将输出:12

PHP strpos() 函数

strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

下面的实例在字符串 “Hello world!” 中查找文本 “world”:

1
2
3
<?php 
echo strpos("Hello world!","world");
?>

上面的代码将输出:6

PHP变量

PHP 变量规则:

变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)

PHP 语句和 PHP 变量都是区分大小写的。

-实例:

1
2
3
4
5
6
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

创建(声明)PHP 变量

PHP 没有声明变量的命令。

  • 变量在第一次赋值给它的时候被创建:
  • 实例
    1
    2
    3
    4
    5
    <?php
    $txt="Hello world!";
    $x=5;
    $y=10.5;
    ?>

PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型。

PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

  • PHP 有四种不同的变量作用域:

    local
    global
    static
    parameter

局部和全局作用域

  • 在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

  • 在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    $x=5; // 全局变量

    function myTest()
    {
    $y=10; // 局部变量
    echo "<p>Test variables inside the function:<p>";
    echo "Variable x is: $x";
    echo "<br>";
    echo "Variable y is: $y";
    }

    myTest();

    echo "<p>Test variables outside the function:<p>";
    echo "Variable x is: $x";
    echo "<br>";
    echo "Variable y is: $y";
    ?>

myTest() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。

当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。

然后我们在myTest()函数外输出两个变量的值,函数将会输出全局部变量 $x 的值,但是不能输出 $y 的值,因为 $y 变量在函数中定义,属于局部变量。

你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。

PHP global 关键字

global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上

global 关键字:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$x=5;
$y=10;

function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
上面的实例可以写成这样:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$x=5;
$y=10;

function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}

myTest();
echo $y;
?>

  • Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

function myTest()
{
static $x=0;
echo $x;
$x++;
}

myTest();
myTest();
myTest();

?>

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

注释:该变量仍然是函数的局部变量。

  • 参数作用域

参数是通过调用代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分:

1
2
3
4
5
6
7
8
9
10
<?php

function myTest($x)
{
echo $x;
}

myTest(5);

?>

PHP基本语法

PHP基本语法

1.PHP 语法

PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。

  • 基本的 PHP 语法

PHP 脚本可以放在文档中的任何位置。

PHP 脚本以 <?php 开始,以 ?> 结束:

<?php
// PHP 代码
?>

PHP 文件的默认文件扩展名是 “.php”。
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html> 
<html>
<body>

<h1>My first PHP page</h1>

<?php
echo "Hello World!";
?>

<?php
// 这是 PHP 单行注释

/*
这是
PHP 多行
注释
*/
?>

</body>
</html>

PHP 中的每个代码行都必须以分号结束。
-分号是一种分隔符,用于把指令集区分开来。

通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print。

PHP echo 和 print 语句

PHP echo 和 print 语句

在 PHP 中有两个基本的输出方式: echo 和 print。

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

echo 语句

  • echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。

    • 显示字符串
      下面的实例演示了如何使用 echo 命令输出字符串(字符串可以包含 HTML 标签):

      1
      2
      3
      4
      5
      6
      <?php
      echo "<h2>PHP is fun!</h2>";
      echo "Hello world!<br>";
      echo "I'm about to learn PHP!<br>";
      echo "This", " string", " was", " made", " with multiple parameters.";
      ?>
    • 显示变量
      下面的实例演示了如何使用 echo 命令输出变量和字符串:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      <?php
      $txt1="Learn PHP";
      $txt2="w3cschool.cc";
      $cars=array("Volvo","BMW","Toyota");
      echo $txt1;
      echo "<br>";
      echo "Study PHP at $txt2";
      echo "My car is a {$cars[0]}";
      ?>
  • print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。

    • 显示字符串
      下面的实例演示了如何使用 print 命令输出字符串(字符串可以包含 HTML 标签):

      1
      2
      3
      4
      5
      <?php
      print "<h2>PHP is fun!</h2>";
      print "Hello world!<br>";
      print "I'm about to learn PHP!";
      ?>
    • 显示变量
      下面的实例演示了如何使用 print 命令输出变量和字符串:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      <?php
      $txt1="Learn PHP";
      $txt2="w3cschool.cc";
      $cars=array("Volvo","BMW","Toyota");
      print $txt1;
      print "<br>";
      print "Study PHP at $txt2";
      print "My car is a {$cars[0]}";
      ?>
,