PHP里的$_GET数组介绍

1. 什么是$_GET数组

在PHP中提供了$_GET数组用于获取通过URL传递的参数,例如以下URL:

http://www.example.com/index.php?key1=value1&key2=value2

在这个URL中,我们可以从$_GET数组中获取key1和key2的值value1和value2。在$_GET数组中,URL中的参数以键值对的形式存在。

1.1 URL传递参数的三种方式

在实际开发中,如果我们需要在URL中传递参数,一般有以下三种方式:

使用问号传参方式,例如: http://www.example.com/index.php?key1=value1&key2=value2

使用目录方式,例如:http://www.example.com/index.php/key1/value1/key2/value2

使用域名方式,例如:http://key1.value1.key2.value2.example.com/

$_GET数组只适用于第一种方式,也就是使用问号传参方式。

2. 如何使用$_GET数组

2.1 获取单个参数的值

使用$_GET数组获取单个参数的值非常简单,只需要指定参数的键名即可,例如获取上文提到的key1的值:

echo $_GET['key1']; //输出:value1

需要注意的是,如果指定的键名不存在,会产生一个E_NOTICE级别的警告。

2.2 获取所有参数的键值对

如果需要获取所有参数的键值对,可以直接访问$_GET数组,例如:

print_r($_GET); 

/*输出:

Array

(

[key1] => value1

[key2] => value2

)*/

该方法适合于需要处理多个参数的情况。

2.3 设置默认值

如果我们需要获取一个参数的值,但是该参数在URL中不存在,会返回一个Notice级别的错误,为了避免这种情况,我们可以设置默认值,例如:

$var = isset($_GET['key']) ? $_GET['key'] : 'default';

这段代码中,首先使用isset()函数检查$_GET['key']是否存在,如果存在则返回其值,否则返回默认值'default'。

2.4 URL编码与解码

在URL中,参数值可能会包含特殊字符,例如空格、+、&、/、等号等,这些特殊字符需要进行编码,否则URL可能无法被正确解析。PHP中提供了urlencode()函数和urldecode()函数用于进行URL编码和解码。

例如,假设我们要在URL中传递一个包含特殊字符的参数值,可以首先对该参数值进行编码:

$str = "name=Jack&age=18";

$enc_str = urlencode($str);

echo $enc_str; //输出:name%3DJack%26age%3D18

以上代码中,urlencode()函数将字符串中的特殊字符进行了转义,%3D表示等号,%26表示&。

接下来,我们可以在URL中使用编码后的参数值:

$url = "http://www.example.com/index.php?" . $enc_str;

echo $url;

//输出:http://www.example.com/index.php?name%3DJack%26age%3D18

最后,我们需要在PHP中获取该参数的值,在获取参数值之前,我们需要对编码后的字符串进行解码:

$str = urldecode($_GET['str']);

urldecode()函数将编码后的字符串还原为原始字符串,保证了URL中参数值的正确性。

后端开发标签