Проблема производительности с strpos и foreach

У меня есть следующий массив объявлен:

$array = array(
"Car" => array("(car;", "(is Car;", "(suv;"),
"Boat" => array("(boat;", "(Boat;"),
"Motorcycle" => array("(cycle;")
);

Затем я запрашиваю MySQL DB около 20000 результатов в виде строк ($string), то, что я хочу сделать, это искать значения подмассива (т.е. «(автомобиль;») в одной из строк, похожих на эту «Круто (машина; бездорожье;)»

Чтобы добиться этого, я попробовал следующее:

foreach($string as $element) {
foreach($array as $key=>type) {
foreach($type as $search_string) {
if(strpos($element, $search_string) !== FALSE) { //if the search term is present
return $key;
break 2; //exit the loop as it found the right device type
}
} //second foreach strings to search for
} return 'Other';
}

Проблема в том, что он работает, если я запрашиваю очень мало результатов, но для тысячи строк он просто потребляет много памяти, и для возврата результата требуется очень много времени.

Как я могу улучшить производительность кода?

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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