首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >,然后检查是否在数据中

,然后检查是否在数据中
EN

Stack Overflow用户
提问于 2016-07-12 16:58:33
回答 2查看 53关注 0票数 1

我正在检查数组中的每一个可能的东西,看看它是否包含指定的数据。

阵列:

代码语言:javascript
复制
$dogs = [
    "terrier" => "Terrier",
    "german_shepard" => "GS",
];

代码:

代码语言:javascript
复制
if ($stmt->execute()){
    while ($request = $stmt->fetch(PDO::FETCH_ASSOC)){
        foreach($dogs as $x => $x_value){
            if (strpos($request['Data'], $x) !== false) { // This bit!!
               $dog = $x_value;
            } else {
               $dog = 'Unknown dog';
            }
        }
    }
}

然后我就有了一个列表,它可以很好地检测到列表中的第一个,但是其他的则只被称为“未知狗”EG:

1-梗 2-未知犬 3-未知犬

我想让它看起来像:

1-梗 2- GS 3- GS

我希望为找到的每个值显示列表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-12 17:11:04

您正在为它在$dog中检查的每一项覆盖$dogs变量,因此如果在匹配项之后有不匹配的内容,它将将其设置为'Unknown dog'。您应该在循环之前将$dog设置为默认值,并且只有在找到它时才重写它。

代码语言:javascript
复制
$dog = 'Unknown dog';
foreach($dogs as $x => $x_value){
    if (strpos($request['Data'], $x) !== false) { // This bit!!
        $dog = $x_value;
    }
}

$dogs中可能有多个与特定$request['Data']实例相匹配的值。如果使用此代码,$dog将被设置为与$request['Data']匹配的来自$dogs的最后一个值。如果希望将其设置为第一个匹配值,那么在break;之后添加一个$dog = $x_value;如果您想要的不是第一个或最后一个,那么它需要比这个更复杂。

票数 2
EN

Stack Overflow用户

发布于 2016-07-12 17:07:32

您可以使用PHP的本机in_array函数:

代码语言:javascript
复制
$dog = 'Unknown dog';
$key = in_array(strtolower($request['Data']), $dogs);
if($key >= 0){
    $dog = $dogs[$key];
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38334949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档