Есть таблица. Поля id и category. Category - json данные. Я извлекаю данные из таблицы. Заменяю json на обычный массив.
Есть еще обычный массив от клиента.
Допустим, массив клиента: ['smth', 'other']. Массив из json первый: ['it', 'other'], массив из json второй: ['other', 'smth']. Нужно оставить только массивы, в которых хотя бы один элемент совпадает с массивом клиента. Я сделал проверку через in_array(). Если true, то продолжаем, иначе - удаляем массив. Но в таком случае удалится первый массив из json, потому что foreach будет проверять наличие smth во втором массиве, там нет такого значения, но есть элемент other!
Вопрос: как реализовать систему, которая не сразу бы удаляла данные, а сначала убедившись, что совпадений вообще нет.
Пытался сделать через доп. массив, куда складывал имена массивов на удаление, убирал оттуда, если совпадение все-таки находилось. Не получилось. Мне кажется, что я все слишком усложнил. Прошу помощи, заранее благодарен!
1. Не увидел схему таблицы категорий
2. Не понял каким боком тут mysql. Подозреваю что хотите работать с json отсевом на уровне mysql но не уверен. Если хотите: LIKE, RLIKE и собственный генератор регулярных выражений. Хотя и смысла особо не вижу. Если объем данных не большой, то нагрузка что с поиском применяющим RLIKE, что просто на уровне php равноценна. А может даже на MySQL будет больше
3. На счет того что "усложнил" склонен согласится.
4. Не понял зачем хранить категории в json, подозреваю что нужна система подкатегорий, но тогда Adjacency List, Materialized Path и Nested Set в помощь.
@grigor7 стоит пытаться уходить от подобной практики (json в SQL) везде где возможно, сами видите насколько она усложняет жизнь при необходимости выборки.