我有一些代码返回用户代理,通过一个函数运行它来解析它。我之前使用的代码只返回解析函数中的一个变量(有三个:'平台''浏览器''版本'):
function my_get_user_agent($value)
{
$browser = parse_user_agent();
return isset($browser['platform']) ? $browser['platform'] : '';
}
虽然此代码用于返回用户代理的平台,但我需要将其附加到函数中返回所有三个变量。我将代码的前半部分更改为我认为正确的代码:
return isset($browser['platform'], $browser['browser'], $browser['version'])? $browser['platform'] : '';
但是,我不确定我需要做些什么才能正确返回所有三个值。建议?
答案 0 :(得分:1)
您只需返回整个数组:
return $browser;
然后再访问这些值:
$browser['platform'];
$browser['browser'];
$browser['version'];
再次阅读您的问题,您似乎想确保设置该值。你可以这样做:
foreach($browser as $value) {
if(isset($value)) {
$data[] = $value;
}
}
return $data;
现在数据将包含平台,浏览器和版本。
答案 1 :(得分:0)
PHP中没有元组结构:Are there tuples in PHP?
您可以返回整个浏览器数组,也可以返回这样的子集(这不会返回未定义的值):
array_intersect_key($browser, array_flip(array("platform", "browser", "version")))
此外,如果要将函数的结果设置为变量,list
构造可以很方便,但您必须确保值按此顺序并且它们存在。为此你必须像SeanWM建议那样继续:
function my_get_user_agent($agent) {
$browser = parse_user_agent($agent);
foreach(array("platform", "browser", "version") as $value) {
$data[] = isset($browser[$value]) ? $browser[$value] : '';
}
return $data;
}
list($platform, $browser, $version) = my_get_user_agent($agent);