我试图找到一种方法来检查给定键的值是否存在于数组中(在foreach循环中)。
由于某些原因,它并不像预期的那样工作。
我的想法是,我已经知道键的名称,但只知道键的相关值的一部分。
假设我知道关键是"exampleKeyName“,并且它的值可能包含”matchValue“,也可能不包含”matchValue“,我就尝试这样做:
foreach( $array as $key => $value) {
if (stripos($array["exampleKeyName"], 'matchValue') !== false) { echo "matched"; }
}这将返回“非法字符串偏移”。
然而,如果我这样做,它是有效的:
foreach( $array as $key => $value) {
if (stripos($value, 'matchValue') !== false) { echo "matched"; }
}这里的问题是,我希望对查询更加具体,只检查键是否为"exampleKeyName“。
发布于 2014-06-12 11:45:36
你离我们不远了,有几种方法可以做到。
在示例代码中,您不是检查key,而是在这两种情况下检查value。在执行类似于第二个代码示例中的for循环时,必须像这样更改if语句以检查key
if (stripos($key, 'matchValue') !== false) { echo "matched"; }由于我不知道它的应用程序是什么,我只会告诉您几种其他方法来实现这一点,也许它们也将有助于简化代码。
php有一个名为存在的助手函数,用于检查数组中是否存在给定的键或索引。结果是一个布尔值。如果您只需要知道数组是否包含索引或键,这是另一种方法。看起来是这样的:
if( array_key_exists('matchValue', $array) ) {
print('Key exists');
} else {
print('No key found');
}如果您需要使用正则表达式,那么有一个很好的用于阵列正则搜索的grep算法键也可能有帮助。
https://stackoverflow.com/questions/24183249
复制相似问题