所以,我一直在寻找,但我找不到类似的东西。 我需要的是合并我从DB获得的2行(存储在数组中)并填写空字段。
我们有两个键FIXED和WEIGHT,它们在列中有不同的值。如果我们使用FIXED类型,我们不使用WEIGHT中的值,那些列是空的,现在我必须将这2个2row合并为一个。
有N行(但总是成对)。
这是示例
id type postal fix_price weight_price our_price your_price product_id group_id
1 fixed 8888 50 - 50 - 1 2
2 weight 8888 - 100 - 100 1 2
3 fixed 7777 20 - 20 - 1 2
4 weight 7777 - 30 - 30 1 2
我需要如下结果:
id postal fix_price weight_price our_price your_price product_id group_id
1 8888 50 100 50 100 1 2
2 7777 20 30 20 30 1 2
感谢您的帮助!
答案 0 :(得分:0)
尝试:
ID:2131492868
这会产生你的结果,但我不是你真正想要的东西。
答案 1 :(得分:0)
我真的不明白你的问题是如何与@JustOnUnderMillions答案中你在评论中分享的(非常不同的)数据结构相关联的,所以这里是基于你的初始问题所建议的结构的答案。 p>
利用你的其他评论,你说“我尝试过使用$ arra1 + $ array2”,我猜你可以先将源数据格式化为:
$fixed = [
8888 => [50, NULL, 50, NULL, 1, 2],
7777 => [20, NULL, 20, NULL, 1, 2],
];
$weight = [
8888 => [NULL, 100, NULL, 100, 1, 2],
7777 => [NULL, 30, NULL, 30, 1, 2],
];
然后使用这个简单的代码非常容易:
foreach ($fixed AS $postal => $fixed_data) {
$weight_data = $weight[$postal];
foreach ($fixed_data AS $key => $fixed_value) {
$all[$postal][$key] = $fixed_value ? $fixed_value : $weight_data[$key];
}
}
给出了预期的结果:
echo '<pre>' . print_r($all, TRUE) . '</pre>';
/*
Array
(
[8888] => Array
(
[0] => 50
[1] => 100
[2] => 50
[3] => 100
[4] => 1
[5] => 2
)
[7777] => Array
(
[0] => 20
[1] => 30
[2] => 20
[3] => 30
[4] => 1
[5] => 2
)
)
*/