配列があり、 string を検索したいと思います'green'
。したがって、この場合、それは$arr[2]
$arr = array(0 => 'blue', 1 => 'red', 2 => 'green string', 3 => 'red');
それをループして各値を比較するのではなく、仕事をする in_array() のような事前定義された関数はありますか?
部分一致の場合、配列を反復処理して、 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)
いくつかの方法があります...
$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
PHP 5.3+
array_walk($arr, function($item, $key) {
if(strpos($item, 'green') !== false) {
echo 'Found in: ' . $item . ', with key: ' . $key;
}
});
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": ""
}
<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);
?>
私は同じ問題を抱えているので、これを試してください...