如何检查数组键是否匹配php中的特定字符串

时间:2017-06-15 18:56:40

标签: php regex

 $array = array(
                "[ci_id]" => '144309',
                "[NEW flag]" => 'No', 
                "[[*PRODUCT_IMAGE_ANCHOR1*]]" => ,
                "[[*PRODUCT_IMAGE2*]]" => '154154154' 
          );

我需要获得具有'[['模式的元素。 我尝试过使用array_key_exists(): -

if (array_key_exists('[*PRODUCT_IMAGE2*]', $array))

但我想只与'['

匹配

任何人都可以帮助我吗

2 个答案:

答案 0 :(得分:2)

preg_grep()array_keys()一起使用,如下所示: -

$matches  = preg_grep ('/[.*?]/i', array_keys($array));

print_r($matches);

输出: - https://eval.in/817299

或者也可以使用strpos(): -

foreach($array as $key=>$val){
  if(strpos($key,'[')!== false){
    echo $key ."is matched with [*] pattern";
    echo PHP_EOL;
  }
}

输出: - https://eval.in/817297

答案 1 :(得分:0)

以下代码将为double赋予true [true,如果您知道元素索引值

,则为[in]
$test = array("a"=>'a',"[a]"=>'a',"[[a]]"=>'a',"b"=>'b',"c"=>'c');
var_dump(array_key_exists("[[a]]", $test));

如果您可以检查密钥以确定[[即使存在,那么下面的代码应该起作用

$test = array("a"=>'a',"[a]"=>'a','[[a]]'=>'a',"b"=>'b',"c"=>'c');
$values = array();
foreach ($test as $key=>$value) {
    if (stripos('[[', substr($key, 0, 2)) !== false) {
        array_push($values, $value);
    }
}