php - 使用键组合对象数组
问题描述
我想组合两个对象数组。让我给你举个例子:
例子:
// First array:
$array1 = [
{ name => 'Joe', p_id => 1 },
{ name => 'Bob', p_id => 2 },
{ name => 'Sam', p_id => 4 }
]
// Second array:
$array2 = [
{ id => 1, name => 'X' },
{ id => 2, name => 'Y' },
{ id => 4, name => 'Z' }
]
预期输出:
$output = [
{ name => 'Joe + X', id => 1 },
{ name => 'Bob + Y', id => 2 },
{ name => 'Sam + Z', id => 4 }
]
目标:
我希望以最快的方式将name
第二个数组中的name
属性与第一个数组中的属性结合起来。
注意:第p_id
一个数组中的属性与第二个数组中的属性相同id
。
我尝试什么:
我使用了速度非常低的嵌套循环。
解决方案
array_map
是解决方案!
鉴于:
$first = [
{ name => 'Joe', p_id => 1 },
{ name => 'Bob', p_id => 2 },
{ name => 'Sam', p_id => 4 },
];
$second = [
{ id => 1, name => 'X' },
{ id => 2, name => 'Y' },
{ id => 4, name => 'Z' },
];
解决方案很简单:
$result = array_map(
static function (\stdClass $first, \stdClass $second): array {
return [
'name' => $first->name . ' + ' . $second->name,
'id' => $first->p_id,
];
},
$first, $second
);
PS:我假设对象是\stdClass
,用正确的替换它。
推荐阅读
- python - 用于查找图形函数的交点的 Python 脚本
- e2e-testing - 页面初始化前如何在TestCafe中设置本地存储
- python - 如何在不改变轴比例的情况下将线函数(x =)插入虹膜数据立方体图?
- ethereum - 我已经使用 truffle unbox react 并且我无法在solidity中返回或添加值到数组
- python - 以 Finviz 之类的格式转换具有 >100 列的数据框
- html - 使用按钮在表格中滚动表格
- c - 使用 taylor put sin(1) 的 C 程序并得到 0.841
- reactjs - 如何在 CoreUI/React 中创建范围滑块?
- jmeter - 在 JMeter 中,随着被测用户数量的增加,预计样本数量会增加一倍还是显着增加?
- html - 自述文件图像未显示在 repo 主页上