这是我当前的代码,但运行时出现解析错误?我刚刚犯了一个愚蠢的错误,或者这不起作用?提前谢谢。
<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>
答案 0 :(得分:1)
您的代码存在一些问题。第一个$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] . ".";
}
}
}
格式,以便更具可读性。这应该不会完全失败:
for
但如果我是你,我会使用in_array
而不是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
实际上是{{1}}的价值。
也就是说,浏览器检测并不像您的整体逻辑所暗示的那么简单。但这至少解决了你最直接的PHP问题,为你提供了一些基础。