我知道在多维数组上有很多答案,但我无法找到我正在寻找的东西。我是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 ( )
)
)
)我感兴趣的唯一信息是键名称为“合并”下的数组中保存的键/值对。这是关于第三阵列深的。数组的键名总是被称为合并,但不能保证它在数组中的位置不会被移动。合并数组中的键/值对的数量也是可以改变的。
我认为我需要的是一个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解析器获得的元素ID进行比较,并将属性值替换为单个数组中包含的元素ID。
我可能需要一个foreach循环。我知道我可以使用is_array来验证$ search是否是一个数组。它正在加入我一直在努力的一切。
谢谢你的帮助。