PHP сравнивает два (потенциально разных размера) 2D-массива - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь сравнить два 2D-массива в PHP, и моя голова болит от всей рекурсии - это, вероятно, будет очевидно для того, кто привык к нему.

У меня есть два 2D-массива, которые выглядятнапример, $ submitArray2D и $ dbArray:

{
    [0] => {
        [0] => 'name'
        [1] => 'sectors'
        [2] => 'address'
        [3] => 'url'
    }
    [1] => {
        [0] => 'name'
        [1] => 'sectors'
        [2] => 'address'
        [3] => 'url'
    }
    ...       
}

$ submitArray2D поступает из пользовательского ввода, а $ dbArray содержит то, что уже находится в базе данных.

Я хочу сравнить их, чтобы увидетьесли какое-либо из значений было обновлено в $ submitArray2D, и сохраните эти изменения в $ dbArray соответственно.

Я также хочу передать любые измененные адреса в отдельную функцию для геокодирования, результаты которой будут сохранены в другом поле базы данных, где ключи ссылаются на ту же запись в $ dbArray (так что $ geocode [4]ссылается, например, на $ dbArray [4].

Я пробовал некоторые операторы foreach для последовательного просмотра массивов, но это не работает, если одна из записей была удалена из серединымассив, потому что два массива больше не в последовательности.Мне интересно, имеет ли смысл какой-то идентификатор для каждой записи массива, но я не уверен, с чего начать.

Любые идеи или указатели будут высоко оценены!

1 Ответ

0 голосов
/ 25 февраля 2012

В конце концов мне это удалось, сохранив уникальный идентификатор рядом с каждым элементом массива, чтобы можно было выполнить цикл и проверить, существует ли этот идентификатор в массиве компаратора, а затем проверить, изменился ли адрес, и, если это так, сохранить изменение (вместе с идентификатором) в отдельном массиве для обработки.

...