#php #mysql
#php #mysql
Вопрос:
возможно ли переставить элементы массива в соответствии с критерием или ключевым словом? например, помещаем результаты двух запросов в массив и и переставляем их элементы в соответствии с ключевым словом, ставя точные совпадения первыми перед аналогичными совпадениями.
$arr = array();
$sql = mysql_query("SELECT * FROM table WHERE (title LIKE '$key') OR (title LIKE '%$key') OR (title LIKE '%$key%') ORDER BY CASE WHEN title LIKE '$key' THEN 0 ELSE 1 END DESC") or die (mysql_error());
while($data = mysql_fetch_array($sql)){
$li = $data['title'];
$arr[] = $li;
}
$sql2 = mysql_query("SELECT * FROM table WHERE (title LIKE '$key') OR (title LIKE '%$key') OR (title LIKE '%$key%') ORDER BY CASE WHEN title LIKE '$key' THEN 0 ELSE 1 END DESC") or die (mysql_error());
while($data = mysql_fetch_array($sql2)){
$li = $data['title'];
$arr[] = $li;
}
// rearrange elements according to $key
Комментарии:
1. почему 3 раза
(title LIKE '$key') OR (title LIKE '%$key') OR (title LIKE '%$key%')
?2. для точных элементов, тех, которые начинаются с него, и тех, в которых есть совпадение