45
$example = array('An example','Another example','Last example');

上記の配列で「最後」という単語を大まかに検索するにはどうすればよいですか?

echo array_search('Last example',$example);

上記のコードは、針が値のすべてと正確に一致する場合にのみ値のキーをエコーし​​ますが、これは私が望んでいないことです。私はこのようなものが欲しい:

echo array_search('Last',$example);

そして、値に「Last」という単語が含まれている場合、値のキーをエコーする必要があります。

4

7 に答える 7

67

検索条件に一致する値を見つけるには、次のarray_filter関数を使用できます。

$example = array('An example','Another example','Last example');
$searchword = 'last';
$matches = array_filter($example, function($var) use ($searchword) { return preg_match("/\b$searchword\b/i", $var); });

配列には、最後の$matches単語を含む元の配列の要素のみが含まれます(大文字と小文字は区別されません)。

基準に一致する値のキーを見つける必要がある場合は、配列をループする必要があります。

$example = array('An example','Another example','One Example','Last example');
$searchword = 'last';
$matches = array();
foreach($example as $k=>$v) {
    if(preg_match("/\b$searchword\b/i", $v)) {
        $matches[$k] = $v;
    }
}

現在、配列$matchesには元の配列のキーと値のペアが含まれており、値には (大文字と小文字を区別しない) word lastが含まれています。

于 2012-09-07T09:43:42.213 に答える
22
function customSearch($keyword, $arrayToSearch){
    foreach($arrayToSearch as $key => $arrayItem){
        if( stristr( $arrayItem, $keyword ) ){
            return $key;
        }
    }
}
于 2012-09-07T09:45:50.560 に答える
14
$input= array('An example','Another example','Last example');
$needle = 'Last';
$ret = array_keys(array_filter($input, function($var) use ($needle){
    return strpos($var, $needle) !== false;
}));

これにより、値に針が含まれているすべてのキーが得られます。

于 2012-09-07T09:45:23.600 に答える
2

最初に一致した要素のキーを見つけます。

echo key(preg_grep('/\b$searchword\b/i', $example));

すべてのキーが必要な場合は、foreach を使用します。

foreach (preg_grep('/\b$searchword\b/i', $example) as $key => $value) {
  echo $key;
}
于 2012-09-07T09:54:43.760 に答える