Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组,然后检查是否在数据中_Php_Arrays - Fatal编程技术网

PHP数组,然后检查是否在数据中

PHP数组,然后检查是否在数据中,php,arrays,Php,Arrays,我正在检查数组中所有可能的内容,以查看它是否包含来自指定数据的内容 数组: $dogs = [ "terrier" => "Terrier", "german_shepard" => "GS", ]; 代码: 然后我有一个列表,它可以很好地检测到列表中的第一个,但其他的它只称为“未知狗”,例如: 1-梗 2-无名狗 3-无名狗 我希望它看起来像: 1-梗 2-GS 3-GS 我希望为找到

我正在检查数组中所有可能的内容,以查看它是否包含来自指定数据的内容

数组:

$dogs = [
    "terrier" => "Terrier",
    "german_shepard" => "GS",
];
代码:

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

1-梗

2-无名狗

3-无名狗

我希望它看起来像:

1-梗

2-GS

3-GS

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

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

$dog = 'Unknown dog';
$key = in_array(strtolower($request['Data']), $dogs);
if($key >= 0){
    $dog = $dogs[$key];
}

您正在为它签入的每个项目覆盖
$dogs
变量,因此,如果在匹配的项目之后有任何不匹配的项目,它会将其设置回
'Unknown dog'
。在循环之前,您应该将
$dog
设置为默认值,并且只有在找到它时才覆盖它

$dog = 'Unknown dog';
foreach($dogs as $x => $x_value){
    if (strpos($request['Data'], $x) !== false) { // This bit!!
        $dog = $x_value;
    }
}

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

您可以使用var\u dump或打印\u r$请求来查看您得到了什么。向我们展示将有助于我们帮助您……我的第一个想法是:您的数据库中是否有
german_shepard
?目前还不清楚。数据库中存储的值是什么?基于什么样的逻辑,您愿意打印这些列表?这里有一个不区分大小写的strpos
:。旁注:尝试打破两个循环以防止不必要的迭代+对不起,你是对的。我用中断来回答,然后意识到这是怎么回事…@FirstOne我添加了一些关于如何在这里使用
break
的解释。
$dog = 'Unknown dog';
foreach($dogs as $x => $x_value){
    if (strpos($request['Data'], $x) !== false) { // This bit!!
        $dog = $x_value;
    }
}