我试图找到一种方法来检查给定键的值是否存在于数组中(在foreach循环内)。
出于某种原因,它并没有像预期的那样真正发挥作用。
我的想法是我已经知道密钥的名称,但只知道密钥的相关值的一部分。
我试图做这样的事情,假设我知道密钥是" exampleKeyName"其值可能包含或不包含" 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"。
答案 0 :(得分:1)
您可以使用stripos检查匹配字符串中包含的数组值,如下所示:
foreach( $array as $key => $value) {
if (stripos($array[$key], 'matchValue') !== false) { echo "matched"; }
}
答案 1 :(得分:0)
如果要检查正则表达式模式是否与数组中的特定值匹配:
if(preg_match("/^yourpattern$/",$myArray["exampleKeyName"])>0) {
// The value of $myArray["exampleKeyName"] is matched by the regex
}
如果检查正则表达式是否与键匹配:
foreach($myArray as $key => $value):
if(preg_match("/^yourpattern$/",$key)>0) {
// $key is matched by the regex
}
endforeach;
我希望它有所帮助!
编辑:糟糕的英语
答案 2 :(得分:0)
你并不遥远,有几种方法可以做到这一点。
在您的示例代码中,您并未检查key
,而是检查value
两种情况。在执行for
循环时,您需要更改if
语句,以检查key
:
if (stripos($key, 'matchValue') !== false) { echo "matched"; }
由于我不知道这个应用是什么,我只是告诉你其他一些实现这个目标的方法,也许它们也有助于简化代码。
php有一个名为array_key_exists的辅助函数,用于检查数组中是否存在给定的键或索引。结果是一个布尔值。如果您只需要知道数组是否包含索引或键,这是另一种方法。这看起来像这样:
if( array_key_exists('matchValue', $array) ) {
print('Key exists');
} else {
print('No key found');
}
如果您需要使用正则表达式,那么有一个很好的Stack Overflow posting about using preg_grep for regex searching of array个键可能也会有所帮助。