这是我当前的代码,但是当我运行它时遇到解析错误?我刚刚犯了一个愚蠢的错误还是这不起作用?提前谢谢。
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
browser();
function browser() {
$browsers = array('chrome', 'msie', 'firefox', 'safari');
for ($i = 0; $i < $browsers.length + 1; $i++) {
if (SERVER['HTTP_USER_AGENT'] == $browsers[$i]) {
echo "You are using {$browsers[$i]}.";
}
}
}
?>
</body>
</html>
你的代码有几个问题。 首先$browsers.length
不是在 PHP 中计算该值的方式。 似乎.length
是JavaScript格式? 应该是count($browsers)
. 此外,您必须SERVER['HTTP_USER_AGENT']
何时应该$_SERVER['HTTP_USER_AGENT']
。我还更改了您的echo
格式,使其更具可读性。这应该可以正常工作而不会完全失败:
browser();
function browser() {
$browsers = array('chrome', 'msie', 'firefox', 'safari');
for ($i = 0; $i < count($browsers) + 1; $i++) {
if ($_SERVER['HTTP_USER_AGENT'] == $browsers[$i]) {
echo "You are using " . $browsers[$i] . ".";
}
}
}
但是如果我是你,我会使用in_array
而不是for
循环来处理你的逻辑:
browser();
function browser() {
$browsers = array('chrome', 'msie', 'firefox', 'safari');
if (in_array($_SERVER['HTTP_USER_AGENT'], $browsers) {
echo "You are using " . $_SERVER['HTTP_USER_AGENT'] . ".";
}
}
基本上,for
循环对于所呈现的逻辑来说是多余的。只需使用in_array
来检查$_SERVER['HTTP_USER_AGENT']
的值实际上是否在$browsers
中。
也就是说,浏览器检测并不像您的整体逻辑所暗示的那么简单。 但这至少解决了你最直接的PHP问题,让你有一些东西可以构建。