gpt4 book ai didi

php - 递归添加元素到数组

转载 作者:搜寻专家 更新时间:2023-10-31 20:58:21 26 4
gpt4 key购买 nike

我需要合并这两个数组($array1 中的$array2):

$array1 = array(
'data' => array(
array(
'raw' => array(
'key1' => array('value1', 'value1_1'),
'key3' => 'value3',
),
),
array(
'raw' => array(
'key1' => array('value10', 'value10_1'),
'key3' => 'value30',
),
),
...
),
);

$array2 = array(
'data' => array(
array(
'raw' => array(
'key1' => 'value1_2',
'key2' => 'value2',
)
)
)
);

预期结果:

array(
'data' => array(
array(
'raw' => array(
'key1' => array('value1', 'value1_1', 'value1_2'),
'key2' => 'value2',
'key3' => 'value3',
),
),
array(
'raw' => array(
'key1' => array('value10', 'value10_1'),
'key3' => 'value30',
),
),
),
);

当我使用 array_merge_recursive 时将 $array2 合并到 $array1['data'][0] 中,我得到了以下结果:

$array1 = array(
'data' => array(
array(
'raw' => array(
'key1' => array('value1', 'value1_1'),
'key3' => 'value3',
),
),
array(
'raw' => array(
'key1' => array('value10', 'value10_1'),
'key3' => 'value30',
),
),
array(
'raw' => array(
'key1' => 'value1_2',
'key2' => 'value2',
)
)
),
);

当我使用 array_replace_recursive 时,我得到了以下结果:

$array1 = array(
'data' => array(
array(
'raw' => array(
'key1' => 'value1_2',
'key2' => 'value2',
'key3' => 'value3',
),
),
array(
'raw' => array(
'key1' => array('value10', 'value10_1'),
'key3' => 'value30',
),
),
),
);

我正在寻找获得预期结果的最简单方法。数组可以有一个未知的 deph 数据结构,它可以有一个以上的索引子数组。看来我需要 array_merge_recursivearray_replace_recursive

之间的组合

非常感谢您的回答:)

最佳答案

首先需要做一些准备,以清除不需要的索引子数组。

代码:(Demo)

$array1['data']=current($array1['data']); // repair
$array2['data']=current($array2['data']); // repair
var_export(array_merge_recursive($array1, $array2)); // merge as intended

输出:

array (
'data' =>
array (
'raw' =>
array (
'key1' =>
array (
0 => 'value1',
1 => 'value1_1',
2 => 'value1_2',
),
'key3' => 'value3',
'key2' => 'value2',
),
),
)

问题更新后表达更复杂的数据结构...

代码:(Demo)

foreach ($array1['data'] as $set) {
foreach ($set['raw'] as $k => $v) {
if (!isset($result['data']['raw'][$k])) {
$result['data']['raw'][$k] = $v;
}else {
$result['data']['raw'][$k] = array_merge((array)$result['data']['raw'][$k],(array)$v);
}
}
}
foreach ($array2['data'] as $set) {
foreach ($set['raw'] as $k => $v) {
if (!isset($result['data']['raw'][$k])) {
$result['data']['raw'][$k] = $v;
}else{
$result['data']['raw'][$k] = array_merge((array)$result['data']['raw'][$k],(array)$v);
}
}
}
var_export($result);

关于php - 递归添加元素到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50371181/

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