如何批量过滤掉所有值为1的$_GET变量?
如何批量过滤掉所有值为1的$_GET变量?
嘿,我太懂你不想写一堆重复判断的心情了!一个个写$_GET['xxx'] != 1确实又繁琐又容易漏,PHP里有个现成的数组函数能轻松搞定这个需求——array_filter()。
你之前尝试的array_values($_GET) != 1逻辑不对哦,因为array_values($_GET)会把所有参数值打包成一个新数组,拿数组和单个值1比较永远都会返回false,所以肯定不生效。
给你两个简单的实现方式:
方式一:生成新的过滤后数组
如果不想修改原$_GET数组,可以生成一个新数组来存过滤后的参数:
// 过滤掉所有值为'1'的GET参数,用严格不等于避免类型转换带来的问题 $filteredGet = array_filter($_GET, function($value) { return $value !== '1'; });
之后你需要使用参数的时候,直接用$filteredGet就行,比如判断article参数是否存在就用isset($filteredGet['article'])。
方式二:直接修改原$_GET数组
要是之后想直接用$_GET来获取过滤后的参数,直接覆盖原数组就行:
// 直接替换原$_GET数组,过滤掉值为1的参数 $_GET = array_filter($_GET, function($value) { return $value !== '1'; });
举个实际例子,假设原$_GET是这样的:
$_GET = [ 'article' => '123456', 'search' => 'bill', 'add_archive' => '1', 'category' => 'general' ];
经过上面的过滤后,剩下的参数就只有article、search和category,完美排除了所有值为1的项。
内容来源于stack exchange
相关产品推荐
相关产品推荐

