Php Don';t存储变量(如果未设置)

Php Don';t存储变量(如果未设置),php,function,variables,Php,Function,Variables,当不存在sort参数时,我收到此通知未定义索引:sort。在创建$sort变量之前,检查sort参数是否存在的最佳方法是什么 function append_URL( $link, $sort ) { $sort = $_GET['sort']; if ( isset($sort) ) { $link = add_query_arg( 'sort', $sort, $link ); } return $link; } 另外,如果只是从$\u GET设置$so

当不存在
sort
参数时,我收到此通知
未定义索引:sort
。在创建$
sort
变量之前,检查
sort
参数是否存在的最佳方法是什么

function append_URL( $link, $sort ) {
  $sort = $_GET['sort'];

  if ( isset($sort) ) {
      $link = add_query_arg( 'sort', $sort, $link );
  }
  return $link;   
}

另外,如果只是从$\u GET设置$sort值,为什么要将其作为参数传递给函数?这似乎是多余的。

这将无法拾取空字符串。array_key_exists将拾取任何值,只要该键存在。当然,
isset
对于空字符串为true。也许你把它和if($\u GET['sort'])混淆了?@AndreKR:他把它和
$arr=array('key'=>null)混淆了;var_dump(isset($a['key')),数组_key_存在('key',$arr))我站着更正;zerkms是正确的,我考虑的是空值,数组键存在的地方,但值是空的。@El Yobo:好吧,因为客户端的所有参数都是字符串-没有办法在那里获得
null
。因此,在这种情况下,这些函数的行为没有差别。请注意,
array\u key\u exists()
的执行速度比
isset
@AndreKR:一次调用没有明显差别;-)@zerkms你和我都不会注意到,但是如果他的程序只包含这一个调用,他就可以轻松地将其总运行时间相乘。:)W/关于速度-是的,它稍微慢一点,但除非你做了大量的检查,否则这可能无关紧要。文档中发布了一个非常简单的基准,供感兴趣的人参考:10万个电话。伙计们,你们在开玩笑吗?;-)在10万杆比赛中,你赢得0.4秒。现在计算100k请求的整个渲染页面时间。;-)
$sort = array_key_exists('sort', $_GET) ? $_GET['sort'] : null;
if (isset($_GET['sort']))