$arr =array('username','admin');
foreach($_GET as $k=>$v)
if(array_search($k, $arr))
$results[$k] = $v;
print_r($results); // prints nothing and I get a
//$results is undefined error
$ _ GET包含:
(
[r] => p/p
[i] => 9
[_s] => true
[r] => 10
[p] => 1
[s] => username
[o] => asc
[username] => bd
)
所以我希望我的$ results数组包含'bd',但它是未定义的。
答案 0 :(得分:3)
array_search
返回键。对于username
,该密钥为0
,其评估结果为false
。您需要检查if (array_search($k, $arr) !== false)
。如果没有任何键存在,您还应该在循环之前初始化$results
,否则永远不会定义$results
。
做同样事情的一个更短的方法是:
$results = array_intersect_key($_GET, array_flip(array('username','admin')));
答案 1 :(得分:1)
deceze答案中的单线程是一个非常酷的解决方案,但一般来说,对于这种应用程序,您需要使用in_array()
,而不是array_search()
。想想array_search,如果你想知道在哪里找到它,in_array如果你只是想知道它在那里。
答案 2 :(得分:0)
代码中没有$results
的定义。
我认为你想要的是这个
$arr =array('username','admin');
$results = array();
foreach($_GET as $k=>$v){
$key = array_search($k, $arr);
if($key)
$results[$k] = $v;
}
print_r($results);