是否可以合并所有现有数组的内容,如果该密钥已被使用 - 那么什么都没有,如果没有 - 那么它必须从其他数组中添加,但是具有空值
array(3) {
[0]=>
array(4) {
["attributes_3_ru-ru"] => "10"
["attributes_3_en-gb"] => "100"
["attributes_4_en-gb"] => "2222"
["attributes_4_ru-ru"] => ""
}
[1]=>
array(2) {
["attributes_6_ru-ru"] => "10"
["attributes_6_en-gb"] => "100"
}
}
[2]=>
array(2) {
["attributes_4_ru-ru"] => "10"
["attributes_4_en-gb"] => "100"
}
...n
}
输出是这样的
array(3) {
[0]=>
array(4) {
["attributes_3_ru-ru"] => "10"
["attributes_3_en-gb"] => "100"
["attributes_4_en-gb"] => "2222"
["attributes_4_ru-ru"] => ""
["attributes_6_ru-ru"] => ""
["attributes_6_en-gb"] => ""
}
[1]=>
array(2) {
["attributes_6_ru-ru"] => "10"
["attributes_6_en-gb"] => "100"
["attributes_3_ru-ru"] => ""
["attributes_3_en-gb"] => ""
["attributes_4_en-gb"] => ""
["attributes_4_ru-ru"] => ""
}
}
[2]=>
array(2) {
["attributes_4_ru-ru"] => "10"
["attributes_4_en-gb"] => "100"
["attributes_6_ru-ru"] => ""
["attributes_6_en-gb"] => ""
["attributes_3_ru-ru"] => ""
["attributes_3_en-gb"] => ""
}
...n
}
答案 0 :(得分:2)
我会这样做。首先,收集所有密钥并创建一个“模板”数组,其中包含空白值。
$merged = array_merge(...$arrays);
$template = array_fill_keys(array_keys($merged), '');
然后将其映射到原始数组数组上,并将每个条目与模板合并。
$result = array_map(function($entry) use ($template) {
return array_merge($template, $entry);
}, $arrays);
答案 1 :(得分:0)
你应该使用array_merge()。
$megaArray = array_merge($array1, $array2, $array3);
或者,如果我过度简化您的用例,并且由于某种原因您需要将数据附加到$ array3,您可以使用foreach()和in_array()代替。以下内容(未经测试)。
foreach($array1 as $key => $value){
if(!in_array($key, $array3)){
$array3[$key] = $value;
}
else{
if($array3[$key] === ""){ // if the current array3 iteration's value is blank, use the new one
$array3[$key] = $value;
}
}
}