37

配列があり、 string を検索したいと思います'green'。したがって、この場合、それは$arr[2]

$arr = array(0 => 'blue', 1 => 'red', 2 => 'green string', 3 => 'red');

それをループして各値を比較するのではなく、仕事をする in_array() のような事前定義された関数はありますか?

4

11 に答える 11

34

部分一致の場合、配列を反復処理して、 strpos()などの文字列検索関数を使用できます。

function array_search_partial($arr, $keyword) {
    foreach($arr as $index => $string) {
        if (strpos($string, $keyword) !== FALSE)
            return $index;
    }
}

完全一致の場合は、 in_array()を使用します

in_array('green', $arr)
于 2013-04-11T09:13:21.130 に答える
16

いくつかの方法があります...

$arr = array(0 => 'blue', 1 => 'red', 2 => 'green string', 3 => 'red');

ループで配列を検索します。

$results = array();

foreach ($arr as $value) {

  if (strpos($value, 'green') !== false) { $results[] = $value; }

}

if( empty($results) ) { echo 'No matches found.'; }
else { echo "'green' was found in: " . implode('; ', $results); }

array_filter() を使用します。

$results = array_filter($arr, function($value) {
    return strpos($value, 'green') !== false;
});

Closuresを他の引数とともに使用するには、 - キーワードがありuseます。したがって、それを抽象化して関数にラップできます。

function find_string_in_array ($arr, $string) {

    return array_filter($arr, function($value) use ($string) {
        return strpos($value, $string) !== false;
    });

}

$results = find_string_in_array ($arr, 'green');

if( empty($results) ) { echo 'No matches found.'; }
else { echo "'green' was found in: " . implode('; ', $results); }

これが実際の例です: http://codepad.viper-7.com/xZtnN7

于 2013-04-11T09:17:39.370 に答える
5

PHP 5.3+

array_walk($arr, function($item, $key) {
    if(strpos($item, 'green') !== false) {
        echo 'Found in: ' . $item . ', with key: ' . $key;
    }
});
于 2013-04-11T09:19:51.040 に答える
3

as sql with '%needle%' で検索するには、試してみてください

$input = preg_quote('gree', '~'); // don't forget to quote input string!
$data = array(
    1 => 'orange',
    2 => 'green string',
    3 => 'green', 
    4 => 'red', 
    5 => 'black'
    );
$result = preg_filter('~' . $input . '~', null, $data);

結果は

{
  "2": " string",
  "3": ""
}
于 2013-04-11T09:20:46.537 に答える
-3
<?php
   $a=array("a"=>"red","b"=>"green","c"=>"blue");
   echo array_search("red",$a);
?>

私は同じ問題を抱えているので、これを試してください...

于 2016-12-15T11:47:56.447 に答える