$keywords = array('red', 'blue', 'yellow', 'green', 'orange', 'white');
$strings = array(
'She had a pink dress',
'I have a white chocolate',
'I have a green balloon',
'I have a chocolate shirt',
'He had a new yellow book',
'We have many blue boxes',
'I have a magenta tie');
На самом деле strings
массив действительно огромный (50 тыс. + записей).
Каков наилучший способ запуска поиска и извлечения соответствующих строк только?
использование array_filter
фильтровать $strings
массив.
Разбейте строки на массив, затем обрежьте каждое слово и используйте array_intersect
проверить, содержит ли массив слов какой-либо из $keywords
,
$result = array_filter($strings, function($val) use ($keywords) {
return array_intersect( array_map('trim', explode(' ', $val)) , $keywords);
});
Лучший способ — это использовать array_filter()
.
$filtered_array = array_filter($strings,'filter');
function filter($a)
{
$keywords = array('red', 'blue', 'yellow', 'green', 'orange', 'white');
foreach ($keywords as $k)
{
if (stripos($a,$k) !== FALSE)
{
return TRUE;
}
}
return FALSE;
}