1
shiny 2015-06-07 14:08:46 +08:00 2
最低等:isset
中级: filter_input 终极:开发框架集成自动处理 |
2
AlloVince 2015-06-07 14:18:21 +08:00 1
$params = array_merge(['id' => ''], $_GET);
if ($params['id']) ... |
3
zhengkai 2015-06-07 14:42:25 +08:00
$_GET += [
'id' => 0, 'page' => 1, ]; |
4
zhengkai 2015-06-07 14:46:28 +08:00 1
这种方法一般不用在 _GET _POST 上,因为网页参数要做很多处理,没有特别声明的整数要禁止负数,字符串要确保是 utf-8 的,等等
一般用在参数上, += 不仅仅是比 array_merge() 简短,还能避免一个坑。如果你的 key 恰好是 0,1,2 这种的,+= 是覆盖,array_merge 的话会给你搞出 3,4,5,3 个 key 变成 6 个 key …… |
6
fbzl OP |
8
moro 2015-06-07 16:06:08 +08:00
@
|
9
b821025551b 2015-06-07 16:17:31 +08:00 via Android
empty配合三目
|
10
em70 2015-06-07 16:20:35 +08:00
error_reporting(0)
世界不就清静了 |
12
yangmls 2015-06-07 17:18:41 +08:00 1
|
13
fbzl OP @zhengkai 手册上写的
array (PHP 4, PHP 5) array — Create an array --- As of PHP 5.4.x you can now use 'short syntax arrays' which eliminates the need of this function. Example #1 'short syntax array' <?php $a = [1, 2, 3, 4]; print_r($a); ?> --- @b821025551b empty()会提示'PHP Notice: Undefined index: id',就是为了避免这个问题的,我才问的 @em70 问题描述中特别指明了,不能关闭报错 |
14
fbzl OP |
15
yangmls 2015-06-07 17:57:51 +08:00 1
@fbzl 也是 laravel 的,一个处理 Closure 的函数
https://github.com/laravel/framework/blob/5.0/src/Illuminate/Support/helpers.php#L782 |
16
yangmls 2015-06-07 17:59:54 +08:00
楼上的 merge 方案无法处理多重数组的情况,而 laravel 能够简单地用 array_get($arr, 'foo.bar') 来获取
楼上的 isset 问题也考虑到了,所以用的 array_key_exists |
19
micate 2015-06-07 18:14:37 +08:00
自己实现一个类似 laravel 的 array_get() 方法是比较方便的,而且也不费电呀。
|
20
geeglo 2015-06-07 18:22:27 +08:00
$id = empty($_GET['id']) ? 1 : intval($_GET['id']);
这样写不会报错的呀~你是不是记错了? |
22
lyragosa 2015-06-07 18:41:30 +08:00
我是直接禁用所有报错信息,眼不见为净。
历史遗留没那么好修的 |
23
fbzl OP |
24
tcsky 2015-06-07 23:40:31 +08:00
写一个全局的 array_get函数,用来处理数组.
|
26
skydiver 2015-06-07 23:56:55 +08:00
优雅的方法就是不要直接读取全局变量$_GET $_POST,而是用框架提供的方法。
|