2013-01-17 42 views
1

我想检查一个字符串的一部分(不是全字符串,因为它将变量)存在于一个数组中。检查一个数组中的字符串的一部分

$test = array(
    0 => 'my searcg', 
    1 => 'set-cookie: shdugdd', 
    2 => 'viable: dunno' 
); 

我想要的是检查是否有任何键具有字符串“set-cookie”,如果是,返回密钥。由于set-cookie的值每次都会有所不同,因此我无法检查完整字符串。它可能不存在,所以需要检查。

我知道我可以遍历数组并检查相同的结果,但我正在寻找更简洁/高效的答案。无法获得解决方案。

+2

循环的解决办法是最多3行 - 的'for'声明中,'strpos'检查和右括号。它会更简洁吗? :) –

+0

你有什么问题与循环数组,并检查相同,并得到结果? – ianace

+1

我的推荐使用php –

回答

4
foreach($test as $key=> $value) 
{ 
    if (strpos($value,'set-cookie') !== false) 
{ 
    echo $key; // print key containing searched string 
    } 
} 

这是另一种选择。 (working example

$matches = preg_grep('/set-cookie/', $test); 
    $keys = array_keys($matches); 

    print_r($matches); 
+0

我知道这可以做我的帖子指出,但无论如何谢谢:) –

+0

@Pushpesh我编辑了我的答案与另一种选择。请检查。 – cartina

+0

@Pushpesh我已添加演示链接到答案。 – cartina

0
function returnkey($arr) { 
    foreach($arr as $key => $val) { 
     if(strpos($val, 'set-cookie') !== false) { 
      return $key; 
     } 
    } 
    return false; 
} 
0

在数组中匹配$ str的函数。

使用案例:$key = strInArray ('set-cookie', $array);

function strInArray ($str, $array) { 

    if (array_walk ($array, function ($val, $key) use (&$data, $str) { 
     if (strpos ($val, $str) !== false) { 
      $data = $key; 
     } 
    })); 

    return $data; 
} 
相关问题