Как синхронизировать два массива в PHP? - PullRequest
0 голосов
/ 13 июня 2011

Для получения дополнительной справочной информации я пытаюсь синхронизировать два календаря (один из них - календарь Google)

Я использую два API для получения всей информации о событиях из этих двух календарей и помещаю их в свои собственные массивы. Так что у меня остается:

GoogleEventArray OtherEventArray

В долгосрочной перспективе я хотел бы выполнить двустороннюю синхронизацию между двумя массивами. Однако сейчас, для простоты, я просто хочу, чтобы OtherEventArray был ведущим, а GoogleEventArray - ведомым.

Я не собираюсь просто удалять весь календарь Google каждый раз, когда запускаю скрипт, и обновлять его из OtherEventArray, потому что этот скрипт будет выполняться по заданию cron каждую минуту или около того, чтобы обновлять календарь Google. Мне просто нужно проверить массивы на наличие изменений или необходимых дополнений.

Так что мне просто нужны идеи для лучшего способа синхронизации этих двух массивов?

EDIT

Возможно, лучшим способом было бы найти различия между этими двумя массивами и добавить его в третий массив, чтобы я мог просто использовать это для сохранения изменений в календаре Google.

Потому что, если я просто объединю два массива в один, мне все равно придется сохранить все эти данные, которые не были изменены, в календарь Google, что вызывает ненужную рабочую нагрузку.

Также вот мои два массива с данными в них, чтобы вы могли получить представление о вещах, которые могут измениться, и мне нужно обнаружить эти изменения в названии, или дате, или описании

http://snipt.org/xXW

Ответы [ 3 ]

0 голосов
/ 13 июня 2011

вы пробовали array_combine.

Вы также можете добавить массив:

$arrFirst = $arrSecond + $arrFirst
0 голосов
/ 13 июня 2011

Что делать, если вы делаете что-то похожее на

$a1[md5("event")]
$a2[md5("event")]

Где "событие" - это фактически некая строка, которую вы создаете для события, например "event name"."event datetime"

Если вы используете тот же принцип дляи тогда, когда вы выполняете слияние либо с помощью метода слияния, либо с помощью уже существующего простого цикла, события просто перезаписывают друг друга, или вы даже можете проверить, существуют ли они уже.

Одна вещь заключается в том, что это будет хорошо для одногоспособ синхронизации.Если вы измените заголовок или что-то из события или даже самого события на другую дату, и это столкновение перезапишет его.Однако вы можете сделать это умнее, чтобы сообщить или даже обнаружить, что событие было перемещено / отредактировано.

0 голосов
/ 13 июня 2011

Посмотрите на array_merge, array_merge_recursive и семейство функций array_uintersect.То, что вам нужно использовать, зависит от точной структуры этих массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...