PHP массив поиск в массиве

$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 тыс. + записей).

Каков наилучший способ запуска поиска и извлечения соответствующих строк только?

5

Решение

использование array_filter фильтровать $strings массив.
Разбейте строки на массив, затем обрежьте каждое слово и используйте array_intersect проверить, содержит ли массив слов какой-либо из $keywords,

$result = array_filter($strings, function($val) use ($keywords) {
return array_intersect( array_map('trim', explode(' ', $val)) , $keywords);
});
4

Другие решения

Лучший способ — это использовать 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;
}
4

По вопросам рекламы [email protected]