2

文字列の一部 (変数になるため、文字列全体ではありません) が配列に存在するかどうかを確認したいと思います。

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

私が望むのは、キーのいずれかに文字列「set-cookie」があるかどうかを確認し、そうであればキーを返すことです。set-cookie値は毎回異なるため、完全な文字列を確認することはできません。存在しない可能性もありますので、それも確認する必要があります。

私は配列をループして同じことをチェックして結果を得ることができることを知っていますが、より簡潔で効率的な答えを探しています。解決策を得るのに苦労しています。

4

4 に答える 4

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

ここに別の選択肢があります。(実施例

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

    print_r($matches);
于 2013-01-17T09:12:29.810 に答える
1

ねえ、php の array_walk 関数を使用できます

詳細な説明はこちらです。

http://php.net/manual/en/function.array-walk.php

ありがとう。

于 2013-01-17T09:14:07.623 に答える
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;
}
于 2013-01-17T09:31:25.443 に答える
0
function returnkey($arr) {
    foreach($arr as $key => $val) {
        if(strpos($val, 'set-cookie') !== false) {
            return $key;
        }
    } 
    return false;
}
于 2013-01-17T09:13:53.640 に答える