[英]PHP loop checking existence of a string in an array then outputting a boolean
Fairly rubbish with PHP, this is a continuation on from my last question . 用PHP相当垃圾,这是我上一个问题的继续。
I have a list of user agents inside an array, and I want an output to be true if the user agent matches one listed inside the array. 我在数组中有一个用户代理列表,如果用户代理与数组中列出的一个匹配,我希望输出为true。
This is what I have for a single user agent: 这是我为单个用户代理所拥有的:
<?php
function mediaType(){
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$var = 0;
if ($browser !== false) { $var = 1; }
return $var;
}
?>
I want something like this: 我想要这样的东西:
<?php
function mediaType(){
$userAgents = array("iPhone", "Chrome");
$browser = $_SERVER['HTTP_USER_AGENT'];
$var = 0;
if (in_array($browser, $userAgents)) {
$var = 1;
}
return $var;
}
?>
I guess a while loop would be a good option, but I am clueless. 我想一会儿循环是个不错的选择,但我一无所知。
You should use a foreach
loop . 您应该使用一个
foreach
循环 。
function mediaType(){
$userAgents = array("iPhone", "Chrome");
$browser = $_SERVER['HTTP_USER_AGENT'];
foreach ($userAgents as $agent) {
if (strpos($browser, $agent) !== false)
return 1;
}
return 0;
}
Here's your sweet and simple method and no need for a separate $var
: 这是您的简单方法,不需要单独的
$var
:
function mediaType()
{
$userAgents = array("iPhone", "Chrome");
$browser = $_SERVER['HTTP_USER_AGENT'];
$var = 0;
foreach($userAgents as $agent)
if(strpos($browser, $agent) !== FALSE)
return 1;
return 0;
}
function mediaType()
{
$userAgents = array("iPhone", "Chrome", ....);
$browser = $_SERVER['HTTP_USER_AGENT'];
foreach($userAgents AS $userAgent)
{
if(preg_match('#' . preg_quote($userAgent, '#') . '#i', $browser))
{
return true;
}
}
return false;
}
Edit: Hm I was too late :/ But in comaprison to the other answers I would use preg_match
to find the browser :) 编辑:嗯,我来不及了:/但与其他答案相比,我会使用
preg_match
查找浏览器:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.