2013-01-17 41 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; 
} 
相關問題