场景:
- 我有这两个数组**:
array1
:
Array
(
[1] => Array
(
[label] => pending
[fillColor] => #468847
[data] => 50
)
[2] => Array
(
[label] => dispatched
[fillColor] => #6ecf70
[data] => 10
)
[3] => Array
(
[label] => delivered
[fillColor] => #f89406
[data] => 1
)
[4] => Array
(
[label] => invoiced
[fillColor] => #3a87ad
[data] => 2
)
)
array2
:
Array
(
[1] => Array
(
[label] => pending
[fillColor] => #468847
[data] => Array
(
[0] => 1
)
)
)
- 我需要的结果是**
Array
(
[1] => Array
(
[label] => pending
[fillColor] => #468847
[data] => Array
(
[0] => 50
[1] => 1
)
)
[2] => Array
(
[label] => dispatched
[fillColor] => #6ecf70
[data] => Array
(
[0] => 10
[1] => 0
)
)
[3] => Array
(
[label] => delivered
[fillColor] => #f89406
[data] => Array
(
[0] => 1
[1] => 0
)
)
[4] => Array
(
[label] => invoiced
[fillColor] => #3a87ad
[data] => Array
(
[0] => 2
[1] => 0
)
)
)
只有4个标签:
pending
dispatched
delivered
invoiced
- 请注意,这些数组只是一个示例。第一个数组可能根本没有值或只有2个值,而第二个数组有3个值或没有值。**
由于上面的限制,我考虑使用array_replace
并使用一个名为
base_array = ["pending", "dispatched", "delivered", "invoiced"]
我已经尝试循环base_array
,并尝试将array1
与array2
匹配(如果标签存在)。
- 基本上,如果键(即标签)不存在于
array1
或array2
中,则替换的值在结果数组中将为0。**
- 基本上,如果键(即标签)不存在于
我试过了
foreach($base_array as $key => $value) {
if(in_array($key, $array1[$key])) {
$array[$key] = $array1[$key];
}
}
但是看起来我在这些多维数组和替换上迷路了。任何帮助都将非常感激。谢谢。
3条答案
按热度按时间mutmk8jj1#
从你的问题我所理解的你可以这样做:-
3j86kqsm2#
试试这个:
9rbhqvlz3#
宣告具有空
data
值的预设数据列数组。将默认数组、第一个数组和第二个数组合并为一个数组。
迭代合并数组的行。
声明由
label
值标识的引用数组。在联接到其组的子数组之前,将遇到的每个data
值显式转换为数组。代码:(Demo)