如何构建数组以根据 browscap 和浏览器版本变量检查用户代理并输出 if 语句?

How to build array for checking user agent against browscap and browser version variable and output a if statement?

我有一个读取用户浏览器代理的文件,如果它与浏览器名称和版本匹配,它会输出一个 if 语句。

$firefoxv = "66.0";
$chromev = "73.0";

if ($browser1['browser'] == "Firefox") {
    if ($browser1['version'] !== $firefoxv)  { 
            echo '<p style="margin-top: 20px;"><b class="label label-danger"><i class="fa fa-exclamation"></i> Your Browser is Out of Date</b></p>Current Version: <b class="label label-success">'.$firefoxv.'</b> - Your Version: <b class="label label-danger">'.$browser1['version'].'</b>';
        } else {
            echo '<p style="margin-top: 20px;"><b class="label label-success"><i class="fa fa-check"></i> Your Browser is Up to Date</b></p>';
        }
}

if ($browser1['browser'] == "Chrome") {
    if ($browser1['version'] !== $chromev)  { 
            echo '<p style="margin-top: 20px;"><b class="label label-danger"><i class="fa fa-exclamation"></i> Your Browser is Out of Date</b></p>Current Version: <b class="label label-success">'.$chromev.'</b> - Your Version: <b class="label label-danger">'.$browser1['version'].'</b>';
        } else {
            echo '<p style="margin-top: 20px;"><b class="label label-success"><i class="fa fa-check"></i> Your Browser is Up to Date</b></p>';
        }
}

现在我要向这个列表中添加更多代码,并且我希望能够在 1 个语句中包含所有代码,这样我就不会一遍又一遍地复制相同的代码。 我的新变量将像这样列出:

$android_browser="Android";
$android_ver="5.1";
$android_webView_browser="Android WebView";
$android_webView_ver="33.0";
$chrome_browser="Chrome";
$chrome_ver="73.0";
$chromium_browser="Chromium";
$chromium_ver="73.0";

我希望它具有与上面相同的 if 语句,但使用新的变量集。这可以用某种数组或类似的东西来完成吗?

它需要基本上查找并匹配浏览器名称,然后一旦匹配检查版本,如果用户浏览器匹配变量中的版本显示 "Browser Up to Date" 否则显示 "Browser Out of Date".

谢谢

我会创建一个数组,您可以在其中使用您调用的内容的值直接访问浏览器版本信息 $browser1['browser']

例如:

$versions = Array(
  "Firefox" => "66.0",
  "Chrome" => "73.0",
  ...
);

这样可以通过引用$versions[$browser1['browser']]

的值快速获取最新版本的浏览器

为此,您可以从未知的浏览器类型中检查该值是否为 NULL。

从那里开始,检查任何 browser/version 场景所需要做的就是一条语句:

if ($browser1['version'] < $version[$browser1['browser']]){
    echo "<p style=\"margin-top: 20px;\"><b class=\"label label-danger\"><i class=\"fa fa-exclamation\"></i> Your Browser is Out of Date</b></p>Current Version: <b class=\"label label-success\">{$version[$browser1['browser']]}</b> - Your Version: <b class=\"label label-danger\">{$browser1['version']}</b>";
}
else {
    echo "<p style=\"margin-top: 20px;\"><b class=\"label label-success\"><i class=\"fa fa-check\"></i> Your Browser is Up to Date</b></p>";
}

要添加新的浏览器或版本,您只需更新数组即可。您还需要做更多工作以确保从 $versions 中获取实际值,但这应该足以让您无需重复任何语句即可开始。