Array_key_exist 个匹配关键字

Array_key_exist of matching keyword

我有一个数组如下存储在变量$keyword_reports_data

[interne] => Array
             (
                [Google.ca - Canada] => Array (...) 
                [Google.com - USA] => Array (...)
             )

我有这样的代码可以搜索(不完全是例子)

foreach ($keyword_reports_data['interne'] as $key => $value) {
   if (array_key_exists("Google.ca", $value)) {
      echo "hi " ;exit;
   }   
   else {
      echo  "not exist "; exit;
   }
}

但实际上它会打印

not exist

如何打印 "hi" 如果数组值像关键字 "Google.ca" 一样只存在 "Google.ca" not with "Google.ca - Canada" 所以我需要为此设置条件

密钥在数组中不同。将密钥从 "Google.ca" 更改为 "Google.ca - Canada"

完全匹配

如果您想 完全匹配 ,请使用 array_key_exists.

将 if 语句更改为:

if (array_key_exists("Google.ca - Canada", $value)) {

部分匹配

如果要检查键是否包含字符串的一部分,请使用 preg_matchstrpos。正则表达式 可以 很慢,因此建议使用 strpos.

示例如下:

preg_match

if (preg_match('/Google.ca/', $key)) {

https://3v4l.org/CcMt7

strpos

if (strpos($key, 'Google.ca') === 0) {

https://3v4l.org/QB1kT

注意:我们使用 ===.

检查字符串的开头是否匹配 Google.ca

您需要在键(而非值)中搜索循环中的子字符串。

$data = [
    'animals' => [
        'UK sheep' => ['beltex', 'blackface'],
        'UK pigs'  => ['berkshire', 'duroc'],
        'NZ sheep' => ['corriedale'],
    ]
];

foreach($data['animals'] as $key => $value) {
    if(strpos($key,'UK') === 0) {
        echo "A key found beginning with 'UK'.\n";
    }
}

输出:

    A key found beginning with 'UK'.
    A key found beginning with 'UK'.