$keys = array( "layerName", "lat", "lon", "radius","CHECKBOXLIST");
$value = array();
try {
foreach( $keys as $key ) {
if ( isset($_GET[$key]) )
$value[$key] = $_GET[$key];
else
throw new Exception($key ." parameter is not passed in GetPOI request.");
}//foreach
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
编写此代码是为了从get请求中获取参数值。如果在GET请求中没有传递这些参数中的任何一个,它应该引发一个异常。但在这种情况下,情况并非如此。可能是什么问题?
$_GET[$key]
可能已设置但没有值,因此它将为$value[$key]
分配一个空字符串值,而不是引发新的异常。我会重写您的if语句来检查空值。
if ( isset($_GET[$key]) === true && empty($_GET[$key]) === false )
{
$value[$key] = $_GET[$key];
}
elseif ( isset($_GET[$key]) === true && empty($_GET[$key]) === true)
{
throw new Exception($key ." parameter is not passed in GetPOI request.");
break;
}
尝试在抛出异常后添加一个break。像这样:
if ( isset($_GET[$key]) )
$value[$key] = $_GET[$key];
else{
throw new Exception($key ." parameter is not passed in GetPOI request.");
break;
}
--编辑--
我必须快速补充一点,我尝试运行您的代码,并按预期引发了一个异常。