Отфильтровывайте фразы в плоском массиве значений, разделенных запятыми, которые не содержат все поисковые запросы.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Отфильтровывайте фразы в плоском массиве значений, разделенных запятыми, которые не содержат все поисковые запросы.

Сообщение Anonymous »

У меня есть массив с именем results_array:

Код: Выделить всё

var_dump($results_array):
0 => php,mysql,jquery,ruby,html,css,lamp
1 => mouse,keyboard,laptop,pad
2 => table,sofa,caption
3 => control,television,control television,television control
и у меня есть $q, который обозначает запрос, я хочу выполнить поиск в массиве $results_array и удалить элементы, которые не имеют ничего общего с запросом, поэтому, если я установлю $q=a, массив результатов должен быть таким:

Код: Выделить всё

0 => lamp
1 => keyboard,laptop,pad
3 => table,sofa,caption
4 => empty
теперь я хочу поместить приведенные выше результаты в каждый индекс results_array, в конце results_array должно быть:

Код: Выделить всё

0 => lamp
1 => keyboard
2 => laptop
3 => pad
4 => table
5 => sofa
6 => caption
мой код:

Код: Выделить всё

foreach ($results_array as &$row) {
$row = explode(',', $row);
}
unset($row);
$results_array = call_user_func_array('array_merge_recursive', $results_array);

foreach ($array as $k => $v) {
if (strpos($v, 'a') === false)
unset($array[$k]);
}
$results_array = array_values($results_array);
Это именно то, что мне нужно, теперь я устанавливаю свой $q = 'tele co', теперь после применения приведенного выше кода set $ = 'tele co' он возвращает emtpy, но это не следует, потому что:

Код: Выделить всё

3 => control,television,control television,television control
'управление телевидением, управление телевидением' должно вернуться, но это не так, поэтому я меняю свой код на:

Код: Выделить всё

foreach ($results_array as &$row) {
$row = explode(',', $row);
}
unset($row);
$results_array = call_user_func_array('array_merge_recursive', $results_array);
// HERE IS CHANGED ****
$q = preg_split('/\s+/', trim($q));
foreach ($results_array as $key => $value) {
foreach ($q as $query) {
if (stripos($value, $query) === false) {
unset($results_array[$key]);
break;
}
}
}
// ****
$results_array = array_values($results_array);
он ​​все еще не работает, передавая $q = 'tele co', мне нужно, чтобы возвращались значения 'television control' и 'control Television', потому что они оба получили 'tele' И 'co' который находится в $q.

Подробнее здесь: https://stackoverflow.com/questions/133 ... not-contai
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»