У меня есть следующий массив объявлен:
$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';
}
Проблема в том, что он работает, если я запрашиваю очень мало результатов, но для тысячи строк он просто потребляет много памяти, и для возврата результата требуется очень много времени.
Как я могу улучшить производительность кода?
Задача ещё не решена.
Других решений пока нет …