我两个阵列就这样出发了。
第一阵列
Array
(
[0] => Array
(
[manufacture] => Moto
[name] => ZSX 125
[code] => ZS125-48A
[cc] => 125
[bike_type] => 3 Motorcycle
[title] => Mto ZSX 125
[about] => The ZSX
)
[1] => Array
(
[manufacture] => Moto
[name] => LSM 125
[code] => STR125YB
[cc] => 125
[bike_type] => 6 Endurancemotor
[title] => Moto
[about] => Moto
)
)
字符串
二阵列
Array
(
[0] => Array
(
[id] => 183
[model] => ZS125-48A
[engine_brand] => 158FMI-B
[engine_type] => Single Cylinder
)
[1] => Array
(
[id] => 172
[model] => STR125YB
[engine_brand] => K154FMI
[engine_type] => Single Cylinder
)
)
型
正如你所看到的,第一个数组中的“code”和第二个数组中的“model”是一样的,并且总是会有一个匹配。
这是我想要的数组。
Array
(
[0] => Array
(
[id] => 183
[model] => ZS125-48A
[engine_brand] => 158FMI-B
[engine_type] => Single Cylinder
[manufacture] => Moto
[name] => ZSX 125
[code] => ZS125-48A
[cc] => 125
[bike_type] => 3 Motorcycle
[title] => Moto ZSX 125
[about] => The ZSX
)
[1] => Array
(
[id] => 172
[model] => STR125YB
[engine_brand] => K154FMI
[engine_type] => Single Cylinder
[manufacture] => Moto
[name] => LSM 125
[code] => STR125YB
[cc] => 125
[bike_type] => 6 Endurancemotor
[title] => Moto
[about] => Moto
)
)
型
这可能吗?我已经尝试了array_merge和array_merge_recursive,但它只将第二个数组追加到第一个数组的末尾,它不会在键上合并它。
4条答案
按热度按时间js81xvg61#
如果两个数组是同步的(即具有匹配
code
和model
的项在两个数组中的索引相同),Deceze的解决方案是完美的。如果不是这种情况,您将需要多行代码。数组需要有字符串键才能与
array_merge
合并。在这种情况下,你想根据code
和model
分别对第一个数组和第二个数组重新设置键。重新设置键后,你可以将它们与array_merge_recursive
合并。在PHP 5.5+中重新设置密钥很容易:
字符串
在早期版本中稍微复杂一些:
型
在这两种情况下,最后一步是相同的:
型
yfjy0ee72#
在我看来,这应该可以做到:
字符串
这将
$array1[0]
和$array2[0]
馈送到array_merge
,然后$array1[1]
和$array2[1]
等。7bsow1i63#
如果你更喜欢“简单”的代码...:-)
字符串
pcww981p4#
如果将第一个数组(最终将其行数据追加到第二个数组中的相关行)转换为查找数组,则可以更高效地处理此任务。通过保持第一个数组的行数据不变并将
code
值分配为第一级键,您将能够在迭代第二个数组时进行即时匹配。array_map()
函数体中的+
是“联合运算符”,这是合并关联数组的一种方便方法。产品编号:(Demo)
字符串
对于可能在查找数组中找不到所查找的键的不同情况,可以在Map时回退到“合并”空数组。
型
如果查找数组不能被接受,那么你可以合并数据并将其推入一个临时键控的结果数组,然后在关联数据后删除临时键。Merge row data based on the column value of two 2d arrays