【发布时间】:2017-09-26 21:51:05
【问题描述】:
假设我有这 2 个对象数组:
答:
[
[0] => (stdClass) {
id => '0',
....
},
[1] => (stdClass) {
id => '1',
....
},
,
[2] => (stdClass) {
id => '2',
....
}
]
乙:
[
[0] => (stdClass) {
id => '0',
name => 'Hello',
a_id => '2'
....
},
[1] => (stdClass) {
id => '1',
name => 'World',
a_id => '2'
....
},
[2] => (stdClass) {
id => '2',
name => 'foo',
a_id => '0'
....
}
]
当 B.a_id = A.id 时,来自 B 的对象属于 A,我想将数组中的对象添加到 A,如下所示:
答:
[
...,
[2] => (stdClass) {
id => '2',
mapped_objs => [
[0] => (stdClass) {
id => '0',
name => 'Hello',
a_id => '2'
....
},
[1] => (stdClass) {
id => '1',
name => 'World',
a_id => '2'
....
},
]
}
...,
]
PHP中是否有有效的算法或函数可以解决这个问题?我必须在 O(n^2) 中执行此操作吗?
【问题讨论】:
-
如果您确保您的顶级数组键与类的 id 属性匹配,则按键查找地图将非常快,您无需通过 A 搜索。您只需通过 B 搜索并分配
if (isset(array1[B.id]) -
这里的重要问题是:
id值(属性)是否总是与键匹配?
标签: php