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中参数值的正确性。