@onlinejunior

Поиск в строке по словам, как сделать?

Я пытаюсь сделать поиск по строке - он должен искать в строке соответствующую категорию, собирать id и выводить их.
К сожалению получилось не особо эстетично, может кто может подсказать, по поводу эстетики и правильности ?

function IsInArray_($array , $findme)
{
foreach ($array as $c)
 {
 if (strpos(strtolower($c), strtolower($findme)) !== false )
   return true;
 }
return false;
}


$string  = explode(' ', 'тут совпадение, а тут нет, снова совпадение и снова совпадение ');


while ($data = $queryusers -> fetch()) {
 $th = strtolower($data['name']);
 $string1  = explode(' ', $th);
  foreach($string1 as $e) {
   if(IsInArray_($string  , $e) ){
	  // echo $data['id']; 
	   $array[] = $data['id'];
   }
  }
  
}  $in = 0;

   foreach (array_unique($array) as $r){
	   $in++;
	   if ( $in > 1) { 
	     $r = ",".$r.",";
		 echo mb_substr($r, 0, -1);
	   } else {
		   
			 echo $r;
		}
	    
    
   }
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
1) Приведите код к стандарту PSR-1 (отступы, именование функций и переменных).
2) Дайте осмысленные названия всем переменным, сейчас InArray_(), $th, $string и другие переменные могут быть понятны, если сесть и пошагово дебажить каждую строчку на реальных данных - это неправильно для дальнейшей поддержки кода. Если что-то тяжело переименовать - это сразу повод задуматься - правильно ли построен алгоритм решения задачи)
3) Мелочь, но не делайте так)
$r = ",".$r.",";
Если есть двойные кавычки в строке, то переменную можно писать внутри строки, профита от конкатенации нет.
UPD. Без этих исправлений сложно что-то говорить об эффективности решения
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы