起步 - GET参数 ¶
作者:KK
发表日期:2016.3.20
我们可以通过URL地址参数来表达一些我们想要的信息,让PHP去根据这些参数去做具体的事情,完成后再将我们需要的结果给我们
比如有这样一个网址:http://www.kkh86.com/record/list.html?page=2
从?
号开始,右边的page=2
就是参数,如果我们将它改成"page=3"的话,就是变成http://www.kkh86.com/record/list.html?page=3
,访问后就是第3页内容了(滚动到底下可以看到页码)
其实同样你去一些商城搜索商品时,在搜索结果中翻页也是会发现URL上会带有类似page=xx这样的参数,或者p=xx
参数用=
号(等号)隔开,等号左边是参数的名称,右边是参数的值:http://xxx.com/xxx.html?参数名称=参数值
大概写法就是这样
PHP接收参数 ¶
我们可以用PHP代码接收这些参数,我们调试的URL是http://localhost/index.php
是吧,这下加一个style参数,值是1,变成http://localhost/index?style=1
这样访问吧
然后PHP代码这样写:
print_r($_GET);
访问后你会发现输出的GET数组并不是空数组,而是有一个叫style的键,键值就是URL上面的参数值
你可以再试下改成"style=8877"或者"style=haha"都行的
利用参数进行页面控制 ¶
参数的作用就是为了告诉网站具体按照什么方式去工作,比如顶上我例子中的page参数,就是告诉网站要输出第几页的内容
我们这里尝试使用style参数来输出不同的背景颜色
<?php
$color = '#A99E22'; //默认黄色
if(isset($_GET)){
if($_GET['style'] == 1){
$color = '#0F4A92'; //蓝色
}elseif($_GET['style'] == 2){
$color = '#9A111D'; //红色
}else{
$color = '#199A11'; //绿色
}
}
?>
<html>
<head>
<title>GET参数学习</title>
</head>
<body>
<div style="width:100%; height:500px; <?php echo $color; ?>"></div>
</body>
</html>
这样访问以下URL的颜色分别是:
http://localhost/index
黄色http://localhost/index?style=1
蓝色http://localhost/index=2
红色http://localhost/index?style=其它值
绿色
这样就是通过URL上的GET参数向PHP传递具体的工作方式了,慢慢消化一下吧
多参数 ¶
GET参数可以有多个的,用下面这个形式:
http://localhost?参数1=参数1的值&参数2=参数2的值
其实就是用&
号(和号)将参数分开,比如我们既要传达style,又要传达page,那写法就是
http://localhost?style=xxx&page=yyy
明白了吧,其实就是参数1=AAA&参数2=BBB&参数3=CCC....
然后你也输出一下$_GET数组看看就知道了
取值的问题 ¶
由于默认不带GET参数的情况下,$_GET数组是空的,如果我们在代码里直接写echo $_GET['style'];
这样直接调用它的style键的话会引发程序报错,说这个数组的style索引未定义
所以在使用前,我们都要先用isset判断一下是否存在才能使用
if(isset($_GET['style'])){
if($_GET['style'] == 1){
echo '显示风格1';
}else{
echo '显示风格2';
}
}
其实这样很麻烦,告诉你哦,通常实际开发中我们要处理很多很多的GET参数,那光是一个style参数就要写这么多行代码了,加多几个参数不是一大堆代码?
封装函数来获取嘛
有一个比较简单的方法,就是定义一个函数来获取GET参数,以后获取其它GET参数就方便了,看看下面的代码:
$style = get('style', 1); $page = get('page', 1); $name = get('name'); echo $style == 1 ? '风格1' : '风格2'; echo '第' . $page . '页'; if($name){ echo '名字是' . $name; } function get($key, $defaultValue){ if(!isset($_GET[$key])){ return $defaultValue; } return $_GET[$key]; }
这样就不用写很多isset语句了,只需要在函数里写一次就好了,以后重复利用函数...
反正你有重复的代码就封装成函数好过不封装