У меня есть каталог с файлами и таблицей базы данных, в которых должны быть одинаковые файлы. Я хотел бы иметь возможность синхронизировать таблицу базы данных с каталогом. Какой был бы самый эффективный способ сделать это? или я бы реалистично мог сделать это только грубостью?
Здесь мой подход:
1. получить все файлы в каталоге как массив
2. получить все имена файлов в таблице базы данных в виде массива
3. Зациклируйте значения файла в массиве каталогов и используйте in_array() в массиве таблицы базы данных, чтобы проверить имя файла в этом массиве, а если нет, тогда начните строить массив, чтобы вставить недостающие имена файлов. запустить db-запрос, чтобы добавить каждую строку отсутствующих файлов в таблицу базы данных
4. Зациклируйте массив каталогов и используйте in_array() в массиве каталогов, и все, что не найдено в массиве каталогов, будет просто удалено из таблицы.
Есть ли лучший способ сделать это? или что-то лучше для этого в php, чем in_array()?
Вы можете использовать array_diff()
, чтобы эффективно определять различия между двумя массивами. Запустите его в один конец, чтобы получить добавленные вещи, и наоборот (замените аргументы) на вещи, которые были удалены.
(Обратите внимание, однако, что вы можете работать с копиями массивов, а не с оригиналами.)