xiaolei1314555 发表于 2023-2-7 13:45

二个 二维数组 对比 生成新的二维数组

本帖最后由 xiaolei1314555 于 2023-2-7 13:51 编辑

第一个二维数组:array(2) {
=>
array(6) {
    ["id"]=> 1
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "238756"
    ["name"]=> "帅帅矿岩石不粘炒锅32cm/个"
    ["qty"]=> "2.00"

}
=>
array(6) {
    ["id"]=> 2
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "238757"
    ["name"]=> "帅帅不粘炒锅/个"
    ["qty"]=> "2.00"
}=>
array(6) {
    ["id"]=> 3
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "245093"
    ["name"]=> "凤品优作全铸铁真不锈炒锅(有盖)32cm/个"
    ["qty"]=> "3.00"
}
}
第二个二维数组:array(4) {
=>
array(6) {
    ["id"]=> 1
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "206646"
    ["name"]=> "王麻子麦典麦饭石炒锅32cm/个"
    ["qty"]=> "36.00"

}
=>
array(6) {
    ["id"]=> 2
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "238757"
    ["name"]=> "帅帅不粘炒锅/个"
    ["qty"]=> "2.00"
}
=>
array(6) {
    ["id"]=> 3
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "345417"
    ["name"]=> "凤品优作全铸铁真不锈炖锅32cm/个"
    ["qty"]=> "22.00"
}
=>
array(6) {
    ["id"]=> 4
    ["number"]=> "0001202203180001"
    ["goods_shelves"]=> "2H01JA01-03"
    ["goodsid"]=> "238756"
    ["name"]=> "帅帅矿岩石不粘炒锅32cm/个"
    ["qty"]=> "3.00"
}
}

怎么写个方法实现 2个二维数组 变成一个二维数组 格式如下:
array(4) {            
    =>            
    array(6) {            
      ["id"]=> 1            
      ["number"]=> "0001202203180001"            
      ["goods_shelves"]=> "2H01JA01-03"            
      ["goodsid"]=> "206646"            
      ["name"]=> "王麻子麦典麦饭石炒锅32cm/个"            
      ["a_qty"]=> "0.00"            
      ["b_qty"]=> "36.00"            
      ["c_qty"]=> "0"            
    }            
    =>            
    array(6) {            
      ["id"]=> 2            
      ["number"]=> "0001202203180001"            
      ["goods_shelves"]=> "2H01JA01-03"            
      ["goodsid"]=> "238757"            
      ["name"]=> "帅帅不粘炒锅/个"            
      ["a_qty"]=> "2.00"            
      ["b_qty"]=> "2.00"            
      ["c_qty"]=> "2.00"                        
    }            
    =>            
    array(6) {            
      ["id"]=> 3            
      ["number"]=> "0001202203180001"            
      ["goods_shelves"]=> "2H01JA01-03"            
      ["goodsid"]=> "345417"            
      ["name"]=> "凤品优作全铸铁真不锈炖锅32cm/个"            
      ["a_qty"]=> "0.00"            
      ["b_qty"]=> "22.00"            
      ["c_qty"]=> "0"            
    }            
    =>            
    array(6) {            
      ["id"]=> 4            
      ["number"]=> "0001202203180001"            
      ["goods_shelves"]=> "2H01JA01-03"            
      ["goodsid"]=> "238756"            
      ["name"]=> "帅帅矿岩石不粘炒锅32cm/个"            
      ["a_qty"]=> "2.00"            
      ["b_qty"]=> "3.00"            
      ["c_qty"]=> "0"            
    }               
    =>            
    array(6) {            
      ["id"]=> 5            
      ["number"]=> "0001202203180001"            
      ["goods_shelves"]=> "2H01JA01-03"            
      ["goodsid"]=> "245093"            
      ["name"]=> "凤品优作全铸铁真不锈炒锅(有盖)32cm/个"            
      ["a_qty"]=> "3.00"            
      ["b_qty"]=> "0.00"            
      ["c_qty"]=> "0"            
    }            
}
数组1:里面的qty变成了a_qty ,数组2:里面的qty变成了b_qty ,生成新的二维数组的c_qty 是进行数组1和数组2 goodsid相同 a_qty 等于 b_qty 那么c_qty 就为 a_qty如果不相等 或者有差异 那就是0
请问下 怎么在PHP 写个方法 实现上面的情况,请论坛大牛指点

xiaolei1314555 发表于 2023-2-7 13:55

之前在数据用union进行匹配查询,但是属于sql的慢查询,在并发高数据量大的时候,处理数据非常非常的慢。 所以现在转换成了2个二维数组,然后通过PHP 进行数据应该会比在mysql下数据处理的速度要快很多吧。 求大牛指点谢谢

psvajaz 发表于 2023-2-7 14:03

数组比较麻烦,不知道你是什么语言的,最简单的办法是将数据导入sql,然后使用楼上说的union方法进行合并

xiaolei1314555 发表于 2023-2-7 14:05

psvajaz 发表于 2023-2-7 14:03
数组比较麻烦,不知道你是什么语言的,最简单的办法是将数据导入sql,然后使用楼上说的union方法进行合并

我之前就是在mysql中 用的union进行比较写的,但是处理高并发数据量大的情况下非常慢。 我用的是PHP

psvajaz 发表于 2023-2-7 14:14

PHP不清楚有什么快捷方式,我对C#比较熟悉,C#可以使用LINQ性能不叫快。
另外如果你的并发比较大,你可以做数据库的读写分离和用存储过程来实现。
如果数据量大,把数据从数据库读到php的变量,这里还有传输速度的损耗,不太建议在php中实现

xiaolei1314555 发表于 2023-2-7 14:24

psvajaz 发表于 2023-2-7 14:14
PHP不清楚有什么快捷方式,我对C#比较熟悉,C#可以使用LINQ性能不叫快。
另外如果你的并发比较大,你可以 ...
mysql这种我看都不建议写储存过程,哎!
我这个主要场景用在做盘点程序上面,手机端有app。 并发高,但是处理数据多的也就是200-300条那样,之前用union并发少的情况还可以,高的话就处理的非常非常慢。 我心思把2个表的数据通过条件茶不能出来 然后用foreach循环写一下,不过我想简单了没写出来。只能通过大牛在论坛请教了

laoda1228 发表于 2023-2-7 14:28

看的不想python   应该是别的语言

xiaolei1314555 发表于 2023-2-7 14:35

laoda1228 发表于 2023-2-7 14:28
看的不想python   应该是别的语言

后端是PHP,在PHP中不知道怎么实现

祥哥 发表于 2023-2-7 14:51

不妨先把goodsid当成键值来写

xiaolei1314555 发表于 2023-2-7 14:57

祥哥 发表于 2023-2-7 14:51
不妨先把goodsid当成键值来写

老哥 ,请问下怎么写呢。:lol
页: [1] 2
查看完整版本: 二个 二维数组 对比 生成新的二维数组