gpt4 book ai didi

php - 有条件地组合 PHP 数组

转载 作者:行者123 更新时间:2023-12-03 23:00:50 25 4
gpt4 key购买 nike

是否有一种干净的方法可以有条件地组合 2 个 PHP 数组?我分别从两个数组中获得以下 JSON 响应:

第一个数组:

[
{
"field": {
"id": 20,
"name": "Erfolge",
"field-id": "erfolge",
"type": "textarea"
}
},
{
"field": {
"id": 29,
"name": "Sprachen",
"field-id": "sprachen",
"type": "text"
}
}
]

第二个数组:

    [
{
"field": {
"id": 20,
"name": "Erfolge",
"field-id": "erfolge",
"type": "textarea"
},
"value": "new entry"
},
{
"field": {
"id": 4,
"name": "Trikotnummer",
"field-id": "trikotnummer",
"type": "number"
},
"value": "test"
},
{
"field": {
"id": 29,
"name": "Sprachen",
"field-id": "sprachen",
"type": "text"
},
"value": "Text"
}
]

我想要以下目标输出:

    [
{
"field": {
"id": 20,
"name": "Erfolge",
"field-id": "erfolge",
"type": "textarea"
},
value: "new entry"
},
{
"field": {
"id": 29,
"name": "Sprachen",
"field-id": "sprachen",
"type": "text"
},
value: "Text"
}
]

这意味着如果该字段存在于第一个数组中,则它必须只添加值。我当前的解决方案为我提供了所有没有正确映射的字段:

$fieldData = array();
foreach ($fields as $field) {
$fieldData[]['fields'] = $field->getArrayCopy();
}

// Get Values
$values = $user->getProfileFieldValue();

$fieldValue = array();
foreach ($values as $value) {
$fieldValue[] = $value->getArrayCopy();
}

$result = array_merge($fieldData, $fieldValue);

我应该使用函数 array_walk 吗?

最佳答案

这是一种昂贵的方法,它会搜索第二个数组以查找与第一个数组中的 ID 匹配的元素。

$result = array();
foreach ($first as $e1) {
$id = $e1['field']['id'];
foreach ($secondArray as $e2) {
if ($e2['field']['id'] == $id) {
$e1['value'] = $e2['value'];
break;
}
}
$result[] = $e1;
}

如果第二个数组非常大,您可以通过首先创建一个关联数组来优化它,关联数组的键是第二个数组中的 ID,值是值。

关于php - 有条件地组合 PHP 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com