Я знаю, что есть много ответов на многомерных массивах, но я не мог найти то, что искал точно. Я новичок в PHP и не могу разобраться с некоторыми другими примерами, чтобы изменить их. Если бы кто-то мог показать мне путь, это было бы очень ценно.
Внешний сервис передает мне следующий многомерный массив.
$mArray = Array (
[success] => 1
[errors] => 0
[data] => Array (
[0] => Array (
[email] => me@example.com
[id] => 123456
[email_type] => html
[ip_opt] => 10.10.1.1
[ip_signup] =>
[member_rating] => X
[info_changed] => 2011-08-17 08:56:51
[web_id] => 123456789
[language] =>
[merges] => Array (
[EMAIL] => me@example.com
[NAME] => Firstname
[LNAME] => Lastname
[ACCOUNT] => ACME Ltd
[ACCMANID] => 123456adc
[ACCMANTEL] => 1234 123456
[ACCMANMAIL] => an.other@example.com
[ACCMANFN] => Humpty
[ACCMANLN] => Dumpty
)
[status] => unknown
[timestamp] => 2011-08-17 08:56:51
[lists] => Array ( )
[geo] => Array ( )
[clients] => Array ( )
[static_segments] => Array ( )
)
)
)
Единственная информация, которая меня интересует, - это пары ключ / значение, которые содержатся в массиве под именем «merges». Это примерно третий массив. Имя ключа массива всегда будет называться слиянием, но нет никакой гарантии, что его местоположение в массиве не будет перемещено. Количество пар ключ / значение в массиве слияний также может изменяться.
Я думаю, что мне нужна функция для array_walk_recursive ($ mArray, "myfunction", $ search); где $ search содержит строку для имени ключа (слияния), который я ищу. Ему нужно пройти по массиву, пока он не найдет ключ, проверить, что он содержит массив, а затем (сохранив ключи) вернуть каждую пару ключ / значение в один массив.
Итак, для ясности, вывод функции вернется:
$sArray = Array (
[EMAIL] => me@example.com
[NAME] => Firstname
[LNAME] => Lastname
[ACCOUNT] => ACME Ltd
[ACCMANID] => 123456adc
[ACCMANTEL] => 1234 123456
[ACCMANMAIL] => an.other@example.com
[ACCMANFN] => Humpty
[ACCMANLN] => Dumpty
)
Затем я могу перейти к следующему этапу в моем проекте, который заключается в сравнении ключей в одном массиве слияний с идентификаторами элементов, полученными из анализатора HTML DOM, и замене значений атрибутов на значения, содержащиеся в одном массиве.
Мне, вероятно, нужен цикл foreach. Я знаю, что могу использовать is_array, чтобы проверить, является ли $ search массивом. Он объединяет все это, с чем я борюсь.
Спасибо за вашу помощь.