$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请求中未传递任何这些参数,则应引发异常。但在这种情况下,它不会。可能是什么问题?
答案 0 :(得分:2)
$_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;
}
答案 1 :(得分:-2)
尝试在抛出异常后添加一个中断。像这样:
if ( isset($_GET[$key]) )
$value[$key] = $_GET[$key];
else{
throw new Exception($key ." parameter is not passed in GetPOI request.");
break;
}
- 编辑 -
我必须快速添加,我尝试运行您的代码并按预期引发异常。